【发布时间】:2016-06-09 16:02:56
【问题描述】:
我有 2 个模型:
Performance 和 PerformanceType 以及 2 个各自的表:performances 和 performance_types。
进入performances有一个外键列“performance_type_id”。
如何使用 ActiveRecord 关联从另一个表中获取 performance_type_id 的名称?
class Performance < ActiveRecord::Base
has_one :users
has_one :rates
has_one :performace_types
end
class PerformanceType < ActiveRecord::Base
belongs_to :performances
end
使用上面的代码我尝试在控制台中做:
myvar = Performance.first
myvar.performance_types
NoMethodError: undefined method `performance_types' for #<Performance:0x007f9694b3e700>
我知道问题出在我对活动记录关联的错误解释上,谁能帮助我?
问候。
从创建到添加外键的迁移...
class CreatePerformances < ActiveRecord::Migration
def change
create_table :performances do |t|
t.timestamps null: false
end
end
end
class CreatePerformanceTypes < ActiveRecord::Migration
def change
create_table :performance_types do |t|
t.timestamps null: false
end
end
end
class AddPerformanceTypeIdToPerformance < ActiveRecord::Migration
def change
add_column :performances, :performance_type_id, :integer
end
end
class AddAppointmentInfoToPerformance < ActiveRecord::Migration
def change
add_column :performances, :user_id, :integer
add_column :performances, :start_at, :datetime
add_column :performances, :end_at, :datetime
end
end
class AddUserToPerformances < ActiveRecord::Migration
def change
add_foreign_key :performances, :users
end
end
class AddTypeToPerformances < ActiveRecord::Migration
def change
add_foreign_key :performances, :performance_types
end
end
class AddAdditionalFieldsToPerformanceType < ActiveRecord::Migration
def change
add_column :performance_types, :name, :string
add_column :performance_types, :description, :string
end
end
class AddPerformanceTypeToRate < ActiveRecord::Migration
def change
add_foreign_key :rates, :performance_types
end
end
class AddRateToPerformances < ActiveRecord::Migration
def change
add_column :performances, :rate_id, :integer
add_foreign_key :performances, :rates
end
end
【问题讨论】:
-
应该是单数,而不是复数。
has_one :performance_type你也拼错了性能 - 可能只是在输入你的问题时
标签: ruby-on-rails ruby activerecord