ActiveRecord: через, чтобы установить значения по умолчанию для сквозной таблицы - PullRequest
0 голосов
/ 12 мая 2010

Я хотел бы установить значение по умолчанию в has_many через ассоциацию.

Допустим, у меня есть три модели:

Люди

Друзья

Собаки

Человек может потребовать, чтобы собака стала его другом.

Таким образом, человек создает ассоциацию, в которой у друзей есть активный столбец = false.

User
  has_many :friends
  has_many :dogs, :through => :friends

Теперь, когда я назначаю собаку пользователю

User.find(1).dogs << dog

Таблица друзей содержит ноль в активном столбце.

Модель моих друзей определяется как

Friend
  def initialize(args = {})
    super(args)
    active = false
  end

но это не работает, потому что объект друга никогда не создается. Нужно ли создавать его вручную?

Ответы [ 2 ]

1 голос
/ 12 мая 2010

С помощью следующего кода вы создадите новый friend с active = false

class User < ActiveRecord::Base
  has_many :friends, :conditions => "active = false"
  has_many :dogs, :through => :friends
end

@user = User.new
@user.friends.create #or @user.friends.build
1 голос
/ 12 мая 2010

Для установки значений по умолчанию модели; В модели я делаю это

    before_save :default_values

    private
    def default_values
      self.status = :active unless self.status
    end

Не уверен, что это правильный подход.

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