我与同一模型有多个belongs_to
关系。在两个用户之间建模消息,如下所示(在Message
模型中):
belongs_to :to, :class_name => 'User', :foreign_key => 'to_id'
belongs_to :from, :class_name => 'User', :foreign_key => 'from_id'
attr_accessible :to, :from # ...
相应的has_many
次调用位于User
模型中。除了以下弃用警告(from_id
和to_id
)之外,一切都在我需要的规范和控制台中工作:
DEPRECATION WARNING: You're trying to create an attribute `from_id'. Writing arbitrary attributes on a model is deprecated. Please just use `attr_writer`
相关规范如下:
it "can associate users" do
User.delete(:all)
ufrom = FactoryGirl.create(:DrKevorkian)
ufrom.save!
uto = FactoryGirl.create(:JohnSmith)
uto.save!
m = Message.new
m.from = ufrom # <-- Warning here
m.to = uto # <-- Warning here
m.save
m.from.id.should == ufrom.id
m.to.id.should == uto.id
end
在我看来,由于belongs_to
关联,警告正在发生 - 是否有更清洁/更好的方法来做到这一点?
非常感谢。
答案 0 :(得分:53)
我的经验是,如果您在更改架构后忘记运行rake db:migrate
和rake db:test:prepare
,则会收到此警告。