Ruby on rails 我想创建';第二'';第三';(可能最多到第九个)ActiveRecord的自定义方法,并可能推送(贡献)对rails的更改
我从来没有向开源项目提交过任何东西,坦率地说,我不在乎rails人员对这些方法的看法。我喜欢“最后一种”和“第一种”方法,为了便于抽样,我想将这一概念扩展到“第二种”-“第九种”方法 如何创建自己的自定义方法,将这些方法移植到ActiveRecord **目前正在railscasts.com上观看Ryan Bates的50集电影 **在讨论如何实现这一点时,我认为它可以在:id值(0、1、2、3、4…)上循环,直到找到下一条记录。然后,“第三个”命令可以跳过第一个匹配,直到找到第二个匹配(Model.third),依此类推。哈,现在我想知道。第一次使用同样的方法。我想我会查看源代码。:) **当我沿着这条路冒险时,我会留下一个相关链接的列表(除非我得到10分,否则我不能列出超过2个链接。给我一个,这样我可以添加更多)Ruby on rails 我想创建';第二'';第三';(可能最多到第九个)ActiveRecord的自定义方法,并可能推送(贡献)对rails的更改,ruby-on-rails,ruby,activerecord,open-source,customization,Ruby On Rails,Ruby,Activerecord,Open Source,Customization,我从来没有向开源项目提交过任何东西,坦率地说,我不在乎rails人员对这些方法的看法。我喜欢“最后一种”和“第一种”方法,为了便于抽样,我想将这一概念扩展到“第二种”-“第九种”方法 如何创建自己的自定义方法,将这些方法移植到ActiveRecord **目前正在railscasts.com上观看Ryan Bates的50集电影 **在讨论如何实现这一点时,我认为它可以在:id值(0、1、2、3、4…)上循环,直到找到下一条记录。然后,“第三个”命令可以跳过第一个匹配,直到找到第二个匹配(Mod
如果你的态度是“坦率地说,不在乎rails人对这些方法的看法”,那么我不会指望你能在rails核心中得到一些东西,不过我要说的是,欢迎任何人从github获取源代码并进行自己的修改 同样地,您可以自由地将“拉请求”提交回rails团队,以便将更改提交回rails,但是这些更改是否合并回rails则由rails的维护人员决定
要开始在github上克隆项目,请自己进行更改,然后提交请求。这里有明确的说明(具体请参见第5节)它实际上比您想象的要复杂一些,因为
first
和last
不是单个类上的单个方法,而是在ActiveRecord中的许多不同类上实现的
比如说,
- 您可以使用
,在这种情况下,您调用的是Post.first
ActiveRecord::Base#first
- 您可以使用
,在这种情况下,您调用的是Post.where(:submitted=>true).first
ActiveRecord::Relation\first
- 您可以使用
,在这种情况下,您将调用Post.comments.first
ActiveRecord::Associations::CollectionAssociation#first
第二个
、第三个
等具有类似的行为,您需要在多个位置实现这些方法,而不是仅在一个位置
但为了让您开始,下面是如何实现ActiveRecord::Relation#second
:
class ActiveRecord::Relation
def second
if loaded?
@records[1]
else
@second ||= limit(2).to_a[1]
end
end
end
例如,在初始值设定项中执行这段代码,然后突然调用所有关系的
second
。很明显,我很关心他们的想法,但是不要让它阻止我,这就是我要说的一切好的-记住你也可以通过自己的修改在github上保留你自己的分支,并将你的Gemfile指向你自己的分支。我应该看哪个rails版本?master?“rails 4”的更改是在master中进行的吗?你不想为了这个而分叉并维护你自己的副本,你可以把它做成一个gem并放在Railtie中。我会给这个文件贴什么标签?active_record.rb?我同意这种猴子修补方法是理想的。我对核心类做了大量的修改,我的方式非常类似。如果你真的想分享你的工作,为什么不把它作为一个gem发布呢?如果有足够多的人喜欢它,你可能会有更好的理由花时间提出rails内核请求。