ruby-on-rails - 如何在 Rails 中访问父模型的实例变量?

标签 ruby-on-rails methods associations parent-child

我有两个通过 has_many/belongs_to 关联的模型。我在子模型中创建了一个类方法。但是我不知道如何从类方法中访问父模型的实例方法。这是我正在尝试做的事情的简化:

#User model
class User < ActiveRecord::Base
    has_many :addresses

    def first_name
        "John"
    end

    def last_name
        "Doe"
    end
end

#Address model
class Address < ActiveRecord::Base
    belongs_to :user

    def self.full_name
        parent.first_name + " " + parent.last_name
        #returns full name of parent "John Doe"
    end
end

我希望能够在 Rails 控制台中运行它并让它返回“John Doe”……但没有成功。有什么建议吗?

@user = User.first
@user.addresses.full_name

最佳答案

@user.addresses.full_name

这会返回一个数组,因此您需要从数组中选择一个对象,假设数组不为空。

@user.address.first.full_name

这有什么用?因为您可以从用户对象中获取全名,并且它不应该根据地址更改:(

class User < ActiveRecord::Base
    has_many :addresses

    def first_name
        "John"
    end

    def last_name
        "Doe"
    end

    def full_name
        self.first_name + " " + self.last_name
    end 
end

现在您可以从@user 对象访问full_name

@user.full_name

关于ruby-on-rails - 如何在 Rails 中访问父模型的实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4129685/

相关文章:

ruby-on-rails - 无法在 CommentsController#destroy 中重定向到 Nil(多态关联)

ruby-on-rails - 在 Rails 数据库中实现基于父类(super class)子类模型设计的最佳方法?

ruby-on-rails - Rails单元测试错误: "Test is not a module"

java - 我不明白我的程序的输出,请解释一下

ruby-on-rails - 如果我通过另一个父对象创建子对象,Has_many 集合方法将返回空数组

ruby-on-rails - 在 Rails 的 to_xml 中过滤深度关联

ruby-on-rails - Rails 中复杂的多对多关系

ruby-on-rails - rails : how to make url with multi slash in Grape

java - 原始数据类型和类数据类型的 equals() 方法和 '==' 运算符

Java 抽象类——找不到符号——方法错误