我在Rails中遇到多态问题。
我有这些文件:
class CreateExecutions < ActiveRecord::Migration
def change
create_table :executions do |t|
t.integer :player_space_id
t.integer :what_id
t.references :what, polymorphic: true
t.integer :qty
t.integer :level
t.datetime :when_ready
t.timestamps
end
end
end
class Execution < ActiveRecord::Base
belongs_to :what, :polymorphic => true
end
class Element < ActiveRecord::Base
belongs_to :game_space
has_many :levels
has_many :player_elements
has_many :executions, :as => what
end
class PlayerSpace < ActiveRecord::Base
belongs_to :game_space
belongs_to :user
has_many :executions, as: :what
end
当我运行一个有Element的控制器时,我有这个错误:
PlayerSpacesController中的NameError#show 未定义的局部变量或方法`#/ p>的'what'
愿你帮帮我
答案 0 :(得分:2)
Element
课程中有一个小错字:
改变这个:
class Element < ActiveRecord::Base
#...
has_many :executions, :as => what
end
对此:
class Element < ActiveRecord::Base
#...
has_many :executions, :as => :what
end
例如,你错过了“什么”的冒号,这意味着它不是一个符号,而是一个变量或方法。由于您没有名为what
的变量或方法,因此Ruby会抛出'未命名的变量或方法'错误。