gpt4 book ai didi

ruby-on-rails - Rails 模型中未定义的方法 self.id

转载 作者:行者123 更新时间:2023-12-01 22:30:59 24 4
gpt4 key购买 nike

我有一个简单的客户模型,其中包含 id、firstName、lastName、address_id 列。

在该方法中,我有以下方法将数据添加到数据库:

  def self.add_customer(firstname, lastname)
@cust = Customer.new(:firstName => firstname, :lastName => lastname, :address_id => self.id)
@cust.save
end

这给了我错误

undefined method `id'

我使用的是rails 2.3.5,我在很多书中都看到过这段代码的运行情况。我的客户表确实有一个 ID 列。我已经在实际数据库中验证过。

最佳答案

self.add_customer 是类方法,而不是实例方法,并且仅在实例中具有 id 方法。

编辑:
假设您有:

class Customer < ActiveRecord::Base
belongs_to :address
end

Class Address < ActiveRecord::Base
has_many :customers
end

然后你可以:

@address.customers.create(:first_name => first_name, :last_name => last_name)

它会自动将新客户与@address关联起来。

或者,您可以从方法定义中删除 self 并

def add_customer(firstname, lastname)
@cust = Customer.new(:firstName => firstname, :lastName => lastname, :address_id => self.id)
@cust.save
end

应该可以工作。它之所以有效,是因为如果您将 add_customer 声明为实例方法(没有 self 或类名,如 Address.add_customer),那么它就可以访问 self.id

关于ruby-on-rails - Rails 模型中未定义的方法 self.id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2099358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com