草庐IT

eval_model_params

全部标签

ruby - 获取 TypeError - 无法克隆符号 : error when using active_model_serializer

所以我有Ruby2.1.3和Rails4.2.0,我正在使用active_model_serializergem将正确的json数据发送到AngularJs。不是我今天才从Rails4.1.6升级到4.2.0。以前的版本不存在这个问题。当我尝试从我的mediumshowAction中获取json时出现问题:defshowmedium=Medium.find(params[:id])respond_withmedium,include:[{comments::user},:likes,:user]end这是我升级rails之前相同操作的样子:defshowmedium=Medium.in

ruby - 在不创建 block 作用域的情况下运行 eval

我正在尝试理解Ruby中的eval和绑定(bind)上下文。在irb中考虑以下内容irb(main):001:0>eval"a=42"=>42irb(main):002:0>aNameError:undefinedlocalvariableormethod`a'formain:Objectfrom(irb):2from/Users/niels/.rbenv/versions/2.1.3/bin/irb:11:in`'irb(main):003:0>为什么a没有定义?如果我在评估之前声明a,则值42会分配给a。在我看来,某种block作用域适用于局部变量在eval上下文中可用的情况,但声

ruby-on-rails - rails : get the first n active record objects of a model

我需要一种方法来获取模型的前n项。Item.first(n)、Item.all[1..n]会这样做,只是它们返回的是数组,而不是对象。如何将其作为ActiveRecord对象获取?irb(main):135:0>Player.where(game_id:1).class=>Player::ActiveRecord_Relation#Okirb(main):136:0>Game.first.players.class=>Player::ActiveRecord_Associations_CollectionProxy#Okirb(main):137:0>Player.where(game

ruby-on-rails - class_eval 的类级变量的替代方案?

我对使用class_eval的Ruby变量范围的最佳实践有疑问。在这段代码中,在class_evalblock中,局部变量first和second是未定义的。defparent_method(opts={})first=opts[:percent]second=(10*first).to_iSecondClass.class_evaldodefsecond_method;return{:a=>first,:b=>second};end;endend这似乎是一个范围界定问题,因为我发现让它起作用的唯一方法是创建第一类和第二类级别的变量:defparent_method(opts={})@

ruby - 设置数据映射器 :order parameters from querystring params

由于我还不能熟练使用Ruby,我正在努力构建一个优雅的解决方案来在我的Rails3/DataMapper项目中进行排序。DataMapper示例显示了如何使用带有asc或desc参数的符号来对结果进行排序。例如:Document.all(:order=>[:created_at.desc])将params[:sort]和params[:direction]转换为DataMapper可接受的格式的最佳方法是什么?由于缺乏更好的想法,这就是我目前的想法:sort_order=(params[:sort]||'created_at').to_symsort_obj=params[:sort_

ruby-on-rails - ruby rails : Calling an instance method from another model

我有一个Match模型和一个Team模型。我想在保存匹配后运行一个实例方法(在团队模型中编写)。这就是我得到的。团队.rbdefgoals_sumunlessgoal_count_cachegoal_count=a_goals_sum+b_goals_sumupdate_attribute(:goal_count_cache,goal_count)endgoal_count_cacheend并且有效。现在我需要在保存匹配项时运行它。所以我尝试了这个:匹配.rbafter_save:Team.goals_sumafter_destroy:Team.goals_sum而且它不起作用。我知道

ruby - Ruby 中 Kernel#eval 和 Binding#eval 的区别

为什么Binding#eval会调用block,而Kernel#eval不会?defbar;binding;endbi=bar{|x|p(x+1)}bi.eval"yield2"#==>3eval"yield2",binding#==>LocalJumpError 最佳答案 我认为,在第五行,第二个参数必须是'bi':$ruby-vruby2.0.0p0(2013-02-24revision39474)[x86_64-linux]1defbar;binding;end2bi=bar{|x|p(x+1)}34bi.eval"yield

ruby-on-rails - 如何在 Rails 4 中使用 params.require

我有一个像这样的私有(private)方法用于注册表单,它有四个字段,firstname、email、password和confirm密码。我不确定如何检查密码确认。defuser_paramsparams.require(:user).permit(:name,:email,:password,:password_confirmation)end以前,我使用下面的代码。如何将下面的代码转换为使用params.requireUser.new(name:params[:name],email:params[:email],password:params[:password],confir

带有 instance_eval 的 Ruby block 作用域

我对Rubyblock和过程的理解是它们都是闭包。既然我已经看到它与instance_eval一起使用,我有点困惑。与使用instance_eval相比,在查看裸机时改变block作用域在最常见用途下的行为方式的魔术酱是什么?这是一个示例,您可以在IRB中转储以了解我的意思。我已经包含了一个proc.call和blockyield版本示例。令人高兴的是,它们的行为方式相同。#Testingblock/procandevalclassExampledefinitialize(value)#valuedefinedintheinstance@value=valueenddefcall_a_

ruby-on-rails - 如何调用 active_model_serializer 显式序列化记录

我有一个用于TimeEntry模型的序列化程序,如下所示:classTimeEntrySerializer当我只返回所有记录时,它按预期工作:defindex@time_entries=current_user.time_entries.allrespond_todo|format|format.htmlformat.json{renderjson:@time_entries}endend但是,我想返回按天组织的条目,如下所示:[{"2016-03-16"=>[TimeEntry1,TimeEntry2,TimeEntry3]},{"2016-03-17"=>[TimeEntry1,T