Rails控制台没有运行多行代码

时间:2017-03-20 18:41:45

标签: ruby-on-rails console

所以当我在服务器rails控制台中写这个时:

irb(main):001:0> Member.all do |member|
irb(main):002:1* member.identify
irb(main):003:1> end

它不运行识别功能,它只返回:

Member Load (1.7ms)  SELECT "members".* FROM "members" ORDER BY members.created_at DESC
...

我的语法明智吗?如何在服务器控制台中运行多行代码?

2 个答案:

答案 0 :(得分:0)

您应该尝试使用rails控制台(在app目录中):

rails c

rails console

你可以使用多线工作。

答案 1 :(得分:0)

如果要将.identify SQL函数应用于Member,您不需要使用doend的多行语句,您只需编写:

Member.identify

Member.all将返回与查询一起使用的对象数组。您通常不需要迭代它们,因为编写一个可以自动为您提供所需内容的单独查询更有意义。您可以在模型中放置一个单独的函数(类方法或范围),以便为您提供所需的结果。

即:

会员模特:

self.some_method
  where(":member_name => "Jack")
end

从此处您可以通过编写@member = Member.some_method

在您的视图或控制器中调用它

对于将来,如果要迭代集合中的每个元素(数组,散列),则需要将对象/类链接到迭代器(例如每个或映射)。迭代器基本上是一个方法,它将遍历集合的每个元素,并将某些方法/操作应用于集合中的每个项目:

即:

 some object = [1,2,3]
 some_object.each do |x|
    puts x
    #will go over each element in array and print it
 end