Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-有许多关系导致命名错误_Ruby On Rails_Ruby_Model_Associations_Has Many - Fatal编程技术网

Ruby on rails Rails-有许多关系导致命名错误

Ruby on rails Rails-有许多关系导致命名错误,ruby-on-rails,ruby,model,associations,has-many,Ruby On Rails,Ruby,Model,Associations,Has Many,我有以下迁移和模型: class CreatePlatforms < ActiveRecord::Migration def change create_table :platforms do |t| t.integer :user_id t.string :name t.string :platform_id t.timestamps end end end class CreateUsers &

我有以下迁移和模型:

class CreatePlatforms < ActiveRecord::Migration
  def change
    create_table :platforms do |t|

        t.integer :user_id
        t.string :name
        t.string :platform_id
        t.timestamps
    end
  end
end

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|

        t.string :email
        t.string :first_name
        t.string :last_name
        t.string :gender
        t.date :birthday
        t.timestamps
    end
  end
end

class Platform < ActiveRecord::Base
    belongs_to :user
end

class User < ActiveRecord::Base
    attr_accessible :email, :first_name, :last_name, :gender, :birthday
    has_many :platforms
end
甚至我也可以将用户与平台关联:

user = User.new
platform1 = Platform.new
platform2 = Platform.new
platform1.user = user
但当我试图将平台与用户关联或从用户那里获取平台时,它崩溃了:

user.platforms << user or user.platforms
NoMethodError: undefined method `platforms' for #<User:0x007f8cfd47a770>

user.platforms事实证明,问题在于数据库字段
platform\u id
。这弄乱了轨道。只需删除它,它就会工作。

您确定已重新加载环境和用户变量本身吗?例如,如果您在Rails控制台中有一个用户实例,运行迁移,更新用户模型,然后重新加载控制台,它仍然无法工作,因为用户实例是由类的旧版本组成的,您需要创建一个新实例(再次从DB获取)。如果它发生在您的dev服务器环境中,请提供更多上下文/详细信息。重新加载控制台也是一个非常可能的解决方案!我是在第一次迁移数据库之后完成的。但万一我重新加载了控制台,问题仍然存在。这里没有更多的上下文,这是一个rails空项目(rails 4.0.0 ruby 2.0.0),顺便问一下,为什么有一个字符串字段
platform\u id
?Rails会自动生成
id
,你说得对,但在这种情况下,平台id不是自己模型的id,而是社交网络提供的id(facebook、twitter等)平台是一个社交网络,用户可以有多个社交网络与之关联。这很奇怪,因为我重新加载了控制台,问题依然存在。你是怎么做到的?复制/粘贴我的代码?能否成功保存用户和平台?以及一个简单的
重新加载不行,你必须退出,然后重新打开。我已经关闭并重新打开了控制台,这不是问题所在。我已尝试保存所有实例,但没有更好的结果。我注意到,当我按下制表键时,控制台不会为我自动完成用户的“平台”字段(即:user.plat),因此我认为用户模型中的平台属性有问题,可以吗?。只是为了确保您没有搞乱变量:
user.first.platforms
失败?