如何从相关表中显示描述字段

时间:2012-07-24 12:29:52

标签: ruby-on-rails-3 activerecord associations multiple-tables

刚开始玩Ruby(没有IT背景),直到现在还很顺利。但是,因为两天我被困住了,不明白出了什么问题......非常感谢帮助我解决这个问题!!情况如下所述:

我创建了一个 currencymaster 表,其中包含以下列:currmasdesc:stringcurrmasiso:string。 我创建了一个 currencyrate 表,其中包含以下列:currratemasteridd:integercurrratemasteridc:integercurrraterate:decimalcurrratedate:date。因此,currratemasteridd列反映了主导货币,而currratemasteridc反映了转换货币以生成组合货币对。

models / currencymaster.rb如下所示:

class Currencymaster < ActiveRecord::Base
  has_many :CurrencyRateDom, :class_name => "Currencyrate", :foreign_key => "CurrRateMasterIDD" 
  has_many :CurrencyRateConv, :class_name => "Currencrate", :foreign_key => "CurrRateMasterIDC"
end

models / currencyrate.rb如下所示:

class Currencyrate < ActiveRecord::Base
  belongs_to :CurrencyDominant, :class_name => 'Currencymaster' , :foreign_key => "CurrRateMasterIDD", :validate => true
  belongs_to :CurrencyConverted, :class_name => 'Currencymaster' , :foreign_key => "CurrRateMasterIDC", :validate => true
end

controllers / currencyrates_controller.rb如下所示:

class CurrencyratesController < ApplicationController
  # GET /currencyrates
  # GET /currencyrates.json
  def index
    @currencyrates = Currencyrate.all

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @currencyrates }
    end
  end

  # GET /currencyrates/1
  # GET /currencyrates/1.json
  def show
    @currencyrate = Currencyrate.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @currencyrate }
    end
  end
end

现在我的问题是我无法在视图/ currencyrates / index.html.erb中显示相关的currencymaster.currmasiso而不是currratemasteridd&amp;存储在表currencyrate中的currratemasteridc

我希望所有信息都可以在这个问题中找到,否则请在需要其他信息时告诉我。再次感谢!

1 个答案:

答案 0 :(得分:0)

为什么你不遵守惯例?

您应该创建一个CurrencyMaster类,不要在列的名称中重复“currmas”或“currrate”。不要覆盖外键......你的代码应该是这样的:

class CurrencyMaster < ActiveRecord::Base
  has_many :currency_rate_doms
  has_many :currency_rate_convs
end

你的其他课程也一样。 Rails使用“约定优于配置原则。之后会更好。

欢迎来到精彩的ruby / rails世界。