草庐IT

castle-activerecord

全部标签

ruby-on-rails - ActiveRecord Rails 关系到底是什么?

我试图了解RailsRelations的一些内部结构,以便在查询中有效地使用它们。因此,我打开了一个控制台并做了一些测试:ruby-1.9.2-p180:036>Skill.where(:second_class=>'WealthRanger').map{|att|att.class}=>[Skill(id:integer,name:string,description:string,second_class:string,third_class:string,created_at:datetime,updated_at:datetime)]现在,我不希望有这样的输出。我希望有类似Re

ruby-on-rails - 无法初始化 ActiveRecord 对象

我正在尝试在Rails控制台中做>>user=User.new(:name=>"",:email=>"test@example.com")=>#我的用户类看起来像classUser"endend我正在关注railstutorial.为什么我不能初始化对象? 最佳答案 tl;dr:完全从书中复制,你应该没问题。(注意:我是作者。)有问题的例子来自Chapter4的RubyonRailsTutorialbook并且不是ActiveRecord模型。特别是,问题中显示的User类基于Listing4.9:classUserattr_acc

ruby-on-rails - RoR 扩展 ActiveRecord::relation with undestroy_all

我基本上想要以下功能,但反过来,我已经有了undestroy适用于单个类的函数。https://github.com/rails/rails/blob/2ad168ee41d590bd9a4d15eddf3c2f719c23b60a/activerecord/lib/active_record/relation.rb#L364但是,我试图扩展ActiveRecord::Relation但无济于事。以下是我如何通过forActiveRecord::Base为其他方法做的ActiveRecord::Base.extendTrack::BaseTrack但使用ActiveRecord::Re

ruby-on-rails - 在 Rails ActiveRecord 查询中有条件地链接 where 子句

我有一个表单,当填写时必须触发特定查询,具体取决于表单具有的参数,所以我在我的模型中有一个方法,我认为应该如下所示:defform_query(params)query=''ifparams.has_key?('size')query=query.where(size:params['size'])endifparams.has_key?('title')query=query.where(title:params['title'])end#Moreconditionalsdependingonparams.end我的问题是,query的开头必须是什么?我输入了query='',但我想

ruby-on-rails - 在 ActiveAdmin 过滤器中使用 ActiveRecord 范围

在我的Rails项目中我有模型:classPanel(survey_name){joins(:surveys).where('surveys.survey_nameLIKE(?)',"%#{survey_name}%")}end问题是我如何在activeadminfiter中使用这个范围? 最佳答案 添加到模型:defself.ransackable_scopes(_auth_object=nil)[:by_survey_name]end然后在资源中:filter:by_survey_name,as::string

ruby-on-rails - 如果 NOT nil 获取 ActiveRecords

我希望能够将user_id不为空的表中的所有记录收集起来。这就是我所拥有的,但它似乎没有用(即使我已经让它在一个单独的项目中工作):named_scope:all_registered,:conditions=>["user_id!=?",nil] 最佳答案 SQL有一个特定的运算符来检查NULL:ISNULL和ISNOTNULLnamed_scope:all_registered,:conditions=>["user_idISNOTNULL"] 关于ruby-on-rails-如果N

ruby-on-rails - ActiveRecord:更改并保存模型内的对象状态

我有以下代码:defincoming_acceptation(incoming_code)ifinvite_code==incoming_codeaccepted=trueself.savetrueelsefalseendend但它并没有改变并保存accepted为true,它仍然保持之前的状态,false。@i.incoming_acceptation(incoming_code)=>true@i.accepted=>false 最佳答案 我推荐:defincoming_acceptation(incoming_code)upda

ruby-on-rails - 如何将包含 ActiveRecord 对象的数组旋转 90°

我有@my_objects=[#,#,#,#]我需要把它变成:@my_objects={:id=>[1,2,3,4],:title=>["Blah1"...]}是否有内置方法或一些标准方法?我只能这样想@my_objects.inject({}){|h,c|c.attributes.each{|k,v|h[k]||=[];h[k]这个问题是在我思考thisparticularquestion时产生的 最佳答案 首先,使用Enumerable#map(类似于@o.map{|e|[e.id,e.title]})获取ActiveRecor

ruby-on-rails - 在 ActiveRecord 中使用 first_or_create 的两种不同方式的区别

我是ActiveRecord的新手,所以这可能是一个愚蠢的问题:我的方法是这样写的:sample_organizations=['37Signals','FogCreek']sample_organizations.each{|item|Organization.first_or_create(name:item,time_zone:'Central')}它没有用,我希望它能遍历我的组织数组并将它们全部插入到数据库中,但它只插入了第一行。然后有人建议像这样更改它并且这个方法有效,但我想知道是否有人可以解释第一种方法中的错误,以便我可以了解我在做什么/假设错误。所以这个有效:sample

ruby-on-rails - ActiveRecord 查询链

这个ruby​​/rails构造总是让我困惑:User.where(:name=>"Thiago").limit(3).using(:slave_one)这必须从左到右执行,以便每个连续的调用都有一个接收者。所以我们从User类开始,对其调用where,它返回ActiveRecord::Relation的实例。然后在该实例上调用limit,返回ActiveRecord::Relation的另一个实例。然后在该实例上调用using(恰好选择了一个分片)。我猜,整个事情在ActiveRecord::Relation对象中构建了一个SQL查询。我的问题是,“是什么触发了查询的实际执行”?它不