Как проверить связь на основе столбца в Rails 3.2? - PullRequest
0 голосов
/ 07 марта 2012

Скажем, у меня есть модель assets, которая содержит два столбца:

Assets
    ownership:string
    lease_id:integer   # My Lease Object

Так что ownership может быть «СОБСТВЕННЫМ» или «ЛИЗИНГОМ».

Теперь я хочу разрешить lease_id, если владение LEASE, а если владение LEASE, тогда я хочу потребовать объект аренды.

Как это можно сделать в Rails 3.2.2?

1 Ответ

1 голос
/ 07 марта 2012

Вы можете добавить дополнительные проверки, основанные на методе, который возвращает истину / ложь.Имейте в виду, что это только приведет к тому, что lease_id присутствует, когда ownership == "LEASE".Это не ограничит добавление lease_id в любом случае.

class Asset < ActiveRecord::Base
  validates :lease_id, presence: { :if => :lease? }

  def lease?
    self.ownership == "LEASE"
  end
end

Если вы хотите полностью ограничить lease_id, вы можете использовать функцию обратного вызова для удаления свойства до сохранения объекта в БД.

class Asset < ActiveRecord::Base
  before_create :restrict_lease_id

  def restrict_lease_id
    lease_id = nil if self.ownership == "LEASE"
  end
end
...