gpt4 book ai didi

ruby-on-rails - 无法让 has_many 和下划线工作

转载 作者:行者123 更新时间:2023-12-02 21:49:59 25 4
gpt4 key购买 nike

我已经为此好几天了,尝试了一切。

我正在尝试做一个简单的有很多关联的事情,但它拒绝工作:

我需要的是每个球体都有一个与之关联的 orb_type。

我生成脚手架:

rails generate scaffold orb_type nome
rails generate scaffold orb nome:string descr:text orb_type_id:integer

使 rake db:migrate,

更改模型:

class Orb < ActiveRecord::Base
has_many :orb_types
validates_associated :orb_types
attr_accessible :descr, :nome, :orb_type_id
validates :nome, uniqueness: true, presence: true
end

class OrbType < ActiveRecord::Base
attr_accessible :nome
validates :nome, uniqueness: true, presence: true
belongs_to :orb
end

然后尝试让它工作:

$ rails c
1.9.3-p448 :001 > tipo = OrbType.new nome: "Planeta"
1.9.3-p448 :002 > tipo.save
1.9.3-p448 :003 > tipo = OrbType.find(1)
1.9.3-p448 :004 > planeta = Orb.new nome:"Testname", descr: "TestDescr"
1.9.3-p448 :005 > planeta.orb_type = tipo

在最后一行我收到错误:

NoMethodError: undefined method `each' for #<OrbType:0x00000003dc02a0>

这是怎么回事?下划线和 Rails“约定”让我头疼。

我看到了很多其他类似的主题,但他们的解决方案都不起作用!

最佳答案

你的关联方式是错误的。 (你的脚手架很好,只需要切换 belongs_tohas_many 即可。)

像这样改变你的模型:

class Orb < ActiveRecord::Base
belongs_to :orb_type
validates_associated :orb_types
attr_accessible :descr, :nome, :orb_type_id
validates :nome, uniqueness: true, presence: true
end

class OrbType < ActiveRecord::Base
has_many :orbs
attr_accessible :nome
validates :nome, uniqueness: true, presence: true
end

现在可以为一个球体指定一个类型,并且可以为多个球体指定一个类型。

关于ruby-on-rails - 无法让 has_many 和下划线工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830960/

25 4 0
文章推荐: ruby-on-rails - 设计确认 token 无效
文章推荐: hadoop - flume支持的文件格式
文章推荐: jdbc - 找不到sqoop + cloudera manager jdbc驱动程序
文章推荐: angularjs - 运行 karma/jasmine 测试时出现 TypeError : Object # has no method 'apply' Error: Argument 'fn' is not a function, 获取对象