Rails:显示关联的模型验证

时间:2013-07-01 11:09:06

标签: ruby-on-rails validates-associated

我有三个模特

class RateCard < ActiveRecord::Base
  validate :name, :presence => true, :uniqueness => true

  has_many :rate_card_countries, :dependent => :destroy
  has_many :rate_card_details, :dependent => :destroy
  has_many :countries, :through => :rate_card_countries

end

class RateCardCountry < ActiveRecord::Base

  validates :country_id, :presence => true, :uniqueness => true
  validates :rate_card_id, :presence => true
  belongs_to :rate_card
  belongs_to :country
end

class Country < Geography

  has_one :rate_card
  has_one :rate_card_country

end

在rate_cards_controller中,我想创建/更新rate_cards,以便一个国家/地区应该有一个rate_card。 为此,我在RateCardCountry模型中添加了唯一性验证。 并且我想在创建/更新rate_cards时在rate_card_controller中显示错误。 需要帮助吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你的意图,你正试图在RateCard和Country之间建立一对多的关系。换句话说,一个国家只有一个RateCard,而RateCard可以属于许多国家。 假设是这种情况,你真的不需要RateCardCountry模型(如果你希望它是一个多对多的关系,这将是有用的。)

您需要:

class RateCard < ActiveRecord::Base
  validate :name, :presence => true, :uniqueness => true
  belongs_to :rate_card
end

并确保在RateCard表中有country_id外键。

然后:

class Country < ActiveRecord::Base
  has_one :rate_card
end

此外,现在看来你有:

class Country < Geography

我不确定你是否是Geography类的子类,因为你没有提供剩下的代码。

希望有所帮助。