Tag: 范围

Rails Scope返回all而不是nil

我遇到一个奇怪的问题,创建一个范围并使用第first查找器。 看起来好像在作用域中使用first作为查询的一部分将使得如果没有找到结果则返回所有结果。 如果找到任何结果,它将正确返回第一个结果。 我已经设置了一个非常简单的测试来certificate这一点: class Activity::MediaGroup { where(‘1 = 0’).first } scope :test_pass, -> { where(‘1 = 1’).first } end 注意这个测试,我已经设置了匹配记录的条件。 实际上,我根据实际情况进行查询,并获得相同的奇怪行为。 以下是失败范围的结果。 正如您所看到的,它会生成正确的查询,该查询没有结果,因此它会查询所有匹配的记录并返回: irb(main):001:0> Activity::MediaGroup.test_fail Activity::MediaGroup Load (0.0ms) SELECT “activity_media_groups”.* FROM “activity_media_groups” WHERE (1 = 0) ORDER BY “activity_media_groups”.”id” ASC LIMIT 1 Activity::MediaGroup Load (0.0ms) SELECT “activity_media_groups”.* FROM “activity_media_groups” => #<ActiveRecord::Relation [#, #, #, […]

Rails范围 – 未定义的方法

我有一个名为“event”的模型,其中有一个名为“coming”的范围,它返回将来会发生的事件。 在rails控制台中,每当我输入时 Event.upcoming 它成功返回事件子集。 但是,如果我输入: @events = Event.all @events.upcoming 我得到一个未定义的方法’即将发生’错误。 范围只适用于类而不适用于实例化变量吗? 提前致谢。 Yohann

Rails 3.2.4 SQL查询是在find(:all)上缓存结果

我不确定这个系统是否缓存数据,但它有一些缓存的特性。 基本上我搞乱了rails 3.2.4,系统开始没有显示一些结果。 我认为这是露水到我放入代码模型的默认范围,但即使如此,这应该显示所有结果而不是10个中的9个。但是我总是会丢失我创建的新记录以及我创建的任何其他记录那个记录。 我检查我的sqlite3数据库,看看数据是否放在那里,并检查所有连接信息,同时确保缓存已关闭。 但是,如果我更改了任何模型文件或控制器文件然后保存它,我可以显示数据。 甚至不会改变代码只是触摸命令会做的伎俩。 我认为这与范围有关,但我不能完全确定。 我找到的一个解决方案就是回到Rails 3.2.2。 接缝就可以了。 但是我仍然不喜欢像我刚刚介入的那样感到沮丧。 development.rb # Show full error reports and disable caching config.consider_all_requests_local = true config.action_controller.perform_caching = false house.rb class House ‘created_at DESC’, :limit => 50 validates_presence_of :name has_many :roomies end schema.rb ActiveRecord::Schema.define(:version => 20120601204050) do create_table “houses”, :force => true do |t| t.string “name” t.datetime […]

rails – using:select(distinct)with:has_many:通过关联产生无效的SQL

User has_many :posts has_many :post_tags, :through => :posts PostTag belong_to :post belongs_to :tag scope :distincttag, :select => (‘distinct post_tags.tag_id’) 使用Rails 3.0.4,我得到无效的SQL:SELECT post_tags。*,distinct tag_id … 至少有一个人遇到了同样的问题: http : //www.ruby-forum.com/topic/484938 function或错误? 谢谢

干掉一个帮手:包装form_for并访问本地表单变量

我试图干掉一堆表单代码,这些表单代码在每个表单的末尾出现一组重复的字段。 我写了一个包装form_for rails helper的帮助器。 但是我开始迷失在飞来飞去的所有不同范围…… 我的助手是这样的: def simple_form_helper(record_or_name_or_array, *args, &proc) options = … # overriding some options, not relevant form_for(record_or_name_or_array, *(args < “blah”)) , &proc) # i wish to access &proc and append the call to render # to within &procs scope (to access block local variable) concat render(‘shared/forms/submit’) # this obv does not work […]

如何在命名范围内拥有多个条件?

我有一个用户模型。 我可以通过执行a_user.try(:admin?)来检查用户是否是管理员。 我想定义一个命名范围,它可以在最后X分钟内更新所有用户,而不是管理员。 到目前为止我有: scope :recent, lambda { { :conditions => [‘updated_at > ?’, 5.minutes.ago] } } 这成功地使所有用户在最近5分钟内更新,但如何合并管理员检查? 我不知道如何在范围内的用户实例上调用try() …

Cancan access_by

我这样做到底发生了什么: @patient.course_enrollments.accessible_by(current_ability) 似乎发生了什么是我得到course_enrollments其中course.client_id = user.client.id ,我只是不明白accessible_by如何工作。 # ability.rb can :manage, CourseEnrollment, :course => {:client_id => user.client.id}

如何在Rails管理中显示未范围的模型?

我自己需要这个,所以这里是QA风格: 默认情况下, Rails Admin显示模型的default_scope。 如何让它显示每个完全没有结合的模型?

查找rails 3中没有关联记录的记录

class Person < ActiveRecord::Base has_many :pets scope :with_dog, join(:pets).where("pets.type = 'Dog'") scope :without_pets ??????????????????????????????????? end class Pet < ActiveRecord::Base belongs_to :people end 我想在Person模型中添加一个范围,以返回没有宠物的人。 有任何想法吗? 我觉得这很明显,但此刻它正在逃避我。

rails scope来检查关联是否不存在

我期待编写一个范围,返回所有没有特定关联的记录。 foo.rb class Foo < ActiveRecord::Base has_many :bars end bar.rb class Bar < ActiveRecord::Base belongs_to :foo end 我想要一个范围,可以找到所有没有任何bars的Foo’s 。 很容易找到使用joins的关联,但我没有找到相反的方法。