我是铁轨的初学者,我正在学习Beginning Rails 4第3版:
我有3个丰富的多对多协会模型:
1-评论
2-文章
3-用户
class Comment < ActiveRecord::Base
belongs_to :article
end
class Article < ActiveRecord::Base
validates_presence_of :title
validates_presence_of :body
belongs_to :user
has_and_belongs_to_many :categories
has_many :comments
def long_title
"#{title} - #{published_at}"
end
end
class User < ActiveRecord::Base
has_one :profile
has_many :articles, -> {order('published_at DESC, title ASC')},
:dependent => :nullify
has_many :replies, :through => :articles, :source => :comments
end
该协会在我看来运作良好,但是当我尝试使用rails控制台时,我必须关闭它并重新打开以获得更改,除非user.replies.empty?永远是真的。
注意我尝试了reload!
,但在重新打开rails console之前,仍然无法进行更改。
你知道为什么会这样吗?
答案 0 :(得分:0)
这取决于你没有看到的变化。如果您更改了代码,请调用reload!
方法:
irb(main):001:0> reload!
Reloading...
=> true
如果您在运行控制台时正在更改数据(可能是通过Rails服务器),那么在您的对象上调用reload
就是您想要的:
user = User.first
# change some stuff in the database
user.reload
# user now has the changed data