0

刚开始玩 Ruby(没有 IT 背景)并根据之前的问题/答案(链接)重新启动项目。我现在有以下情况:

创建了一个包含以下列的currencymasterid:integer表,description:string其中isocode:stringID 列是由 Ruby 创建的。

创建了一个包含以下列的 currencyrates 表, 并且id:integerIDdominant:integer列是由 Ruby 创建的。converted:integerrate:decimal

基于此站点上的帮助,我创建了以下模型。models/currencymaster.rb看起来像这样:

class Currencymaster < ActiveRecord::Base
  has_many :currency_rates_dominant, :validate => true, :class_name => 'Currencyrate' 
  has_many :currency_rates_converted, :validate => true, :class_name => 'Currencyrate' 
end

models/currencyrate.rb 看起来像这样:

class Currencyrate < ActiveRecord::Base
  belongs_to :currency_master_doms, :class_name => 'Currencymaster' 
  belongs_to :currency_master_convs, :class_name => 'Currencymaster' 
end

我还没有更改两个控制器中的任何内容。

views\currencyrates\index.html.erb是通过 Ruby 自动生成的,并将记录的值显示为整数。目标是显示表外的currencymaster.isoCurrencymastercurrencyrate.dominantcurrencyrate.converted

非常感谢!!

4

1 回答 1

0

我认为你应该像这样改变你的班级:

class Currencyrate < ActiveRecord::Base
  belongs_to :currency_master_dom, :class_name => 'Currencymaster', :foreign_key => 'dominant' 
  belongs_to :currency_master_conv, :class_name => 'Currencymaster' , :foreign_key => 'converted'
end

之后你应该这样做:

rate = Currencyrate.first
rate.currency_master_dom.iso
rate.currency_master_conv.iso

所有的约定都没有得到尊重。你应该使用dominant_idandconverted_id作为外键,CurrencyRate对于CurrencyMaster类名,你不应该使用 's' belongs_to

于 2012-07-26T12:33:09.993 回答