Объект отказывается сохранять изменения в Rails IRB - PullRequest
0 голосов
/ 11 августа 2010

Доброе утро всем,

У меня есть ассоциация, над которой я работаю, и по какой-то причине я не могу получить ее, чтобы сохранить изменения рассматриваемого объекта при отладке в IRB. Мне было интересно, если кто-нибудь может указать на мою проблему.

Вот ассоциация:

class User < ActiveRecord::Base
  has_and_belongs_to_many :affiliates
  has_one :managed_affiliate, :class_name => "Affiliate", :foreign_key => "manager_id"
end

class Affiliate < ActiveRecord::Base
  has_and_belongs_to_many :users
  belongs_to :manager, :class_name => "User"
  #The affiliates table has a foreign key field of manager_id
end

Когда я запускаю IRB, я могу получить User.first и Affiliate.first. Я могу просто установить user_affiliate пользователя. Однако, когда я сохраняю, это никак не отражается на партнере - у него нет менеджера. Точно так же я могу настроить менеджера партнера точно так же (Affiliate.first.manager = User.first). Он возвращается, как будто все в порядке, но когда я иду сохранить, он просто возвращает «ложь». Если я активирую функцию регистрации IRB, это вывод:

SQL (0.1ms)   BEGIN
SQL (0.2ms)   ROLLBACK

Есть ли какая-либо очевидная причина, по которой эта ассоциация не будет сохранена должным образом?

Кроме того, вот схема для таблицы филиалов:

create_table "affiliates", :force => true do |t|
    t.string   "name"
    t.string   "website"
    t.integer  "market_id"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "logo_file_name"
    t.string   "logo_content_type"
    t.integer  "logo_file_size"
    t.boolean  "track_subs"
    t.integer  "manager_id"
  end

Спасибо за любую помощь.

1 Ответ

1 голос
/ 11 августа 2010

ActiveRecord::Base#save вернет false, если проверка не пройдена или если любые обратные вызовы before_* в модели вернут false.

...