Написание произвольных атрибутов на модели устарело. (Множество принадлежит_от модели) - программирование
Подтвердить что ты не робот

Написание произвольных атрибутов на модели устарело. (Множество принадлежит_от модели)

У меня несколько отношений 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 - есть ли более чистый/лучший способ сделать это?

Большое спасибо.

4b9b3361

Ответ 1

Мой опыт в том, что вы получаете это предупреждение, если вы забыли запустить rake db:migrate и rake db:test:prepare после изменения вашей схемы.