Почему нельзя сохранить записи с дополнительными атрибутами? - PullRequest
1 голос
/ 29 июня 2010

Недавно я столкнулся с проблемой, когда записи были помечены как только для чтения.Изучая документацию, я нашел это:

"Записи, загруженные через объединения с дополнительными атрибутами, будут помечены как доступные только для чтения, поскольку их невозможно сохранить."

Почему бы и нет?Моя модель выглядит следующим образом:

class MailAccount
    belongs_to :account, :class_name => "UserAccount"
    named_scope :active, :joins => :account, 
      :conditions => "user_accounts.archived_at IS NULL"
end

Я не вижу причин, по которым загруженные модели, полученные с этой именованной областью, не могут быть сохранены.Есть идеи?

Ответы [ 2 ]

2 голосов
/ 29 июня 2010

Оказалось, что мне нужно было добавить :select => "mail_accounts.*" в область, иначе запрос сохранял бы атрибуты user_accounts в MailAccount объекте, что препятствовало его сохранению.

Итак, правильный код для использования:

class MailAccount
    belongs_to :account, :class_name => "UserAccount"
    named_scope :active, :joins => :account, 
      :conditions => "user_accounts.archived_at IS NULL",
      :select => "mail_accounts.*"
end
1 голос
/ 29 июня 2010

Когда вы используете: join, модель ActiveRecord для этого связанного объекта не создается.Вы должны использовать: включить вместо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...