gpt4 book ai didi

ruby-on-rails - 如何在 Rails 中扩展 ActiveRecord 对象的功能?

转载 作者:数据小太阳 更新时间:2023-10-29 08:01:41 24 4
gpt4 key购买 nike

我有一个名为 Story 的类,它与一个名为 User 的类相关联。我还有一个名为 Parser 的类,它扩展了 Story 的解析能力(例如查找名词)。

class User < ActiveRecord::Base
has_many :stories
end

class Story < ActiveRecord::Base
belongs_to :user
attr_accessible :title, :content
end

class Parser < Story
def find_nouns
self.content.do_something
end
end

假设我想为数据库中的第一个用户创建一个新故事。通常,我会简单地使用

User.first.stories.new(:title => 'Foo', :content => 'Bar')

我怎样才能做到这一点,并且仍然优雅地将记录与第一个故事联系起来?

沿着这些线的东西:

User.first.stories.new(:title => 'Foo', :content => 'Bar').find_nouns

问题是,基类无法访问 find_nouns 方法——它属于 StoryParser。

最佳答案

您的 Parser 类看起来应该是一个混合到 Story 类或实例中的模块,因为它是故事的一个方面。

http://en.wikipedia.org/wiki/Aspect-oriented_programming

这是模块:

module Parser
def find_nouns
...
end
end

通过include将其混合到类中:

class Story
include Parser
end

或者将其混合到 Story 的实例中:

@user.stories.first.extend(Parser).find_nouns

关于ruby-on-rails - 如何在 Rails 中扩展 ActiveRecord 对象的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866553/

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