Tag: activerecord

为什么在控制台中不返回Active Record关系?

我终于开始将我的Rails应用程序从2.3.8升级到3.1.0。 我正在观看关于Active Record查询的RailsCasts( http://railscasts.com/episodes/202-active-record-queries-in-rails-3 )。 当我打开控制台(rails c)并执行与此类似的查询时: articles = Article.order(“name”) 我没有返回Active Record关系,而是看到了执行的查询。 我在这做错了什么? Rails版本:3.1.0 RVM on 1.9.2 谢谢您的帮助! 编辑:我添加了示例中的屏幕截图。

更好的SQL – :group vs.:select =>’DISTINCT’

让我们假设三个模型,标准连接: class Mailbox :addresses end class Address < ActiveRecord::Base belongs_to :mailbox belongs_to :domain end class Domain :addresses end 现在很明显,如果对于任何给定的邮箱,您想知道它在哪个域中有地址,您有两种可能的方法: m = Mailbox.first # either: SELECT DISTINCT domains.id, domains.name FROM “domains” INNER JOIN # “addresses” ON “domains”.id = “addresses”.domain_id WHERE # ((“addresses”.mailbox_id = 1)) m.domains.all(:select => ‘DISTINCT domains.id, domains.name’) # or: SELECT domains.id, domains.name FROM “domains” […]

查找使用acts_as_taggable_on标记的对象的所有子项

我有一个有两个模型的rails网站:事件和日期 活动有很多日期 使用acts_as_taggable_on标记事件 我正在尝试查找标记有特定标记的事件的所有日期(按时间顺序排列)。 我可以弄清楚如何获取所有标记的事件,但我无法弄清楚如何获取所有日期。 我正在寻找的最终结果是创建一个类似事件的日历,其中事件出现在每个日期。 希望这是有道理的,感谢任何和所有的输入!

你会如何建立这个每日课程表?

我想要做的很简单,但我正在努力找到最好或最优雅的方式来做到这一点。 我现在正在构建的Rails应用程序将具有每日课程的时间表。 对于每个类,与此问题相关的字段为: 一周中的天 起始时间 结束时间 单个条目可能是这样的: 星期几:星期三 开始时间:上午10:00 结束时间:中午 此外,我必须提到它是一个双语Rails 2.2应用程序,我正在使用本机i18n Railsfunction。 我其实有几个问题。 关于一周中的哪一天,我应该创建一个包含日期列表的额外表格,还是有一种内置的方式来动态创建该列表? 请记住,一周中的这几天必须在日程表视图中以英语或西class牙语呈现,具体取决于区域设置变量。 在查询时间表时,我需要在星期一到星期日的工作日对结果进行分组和排序,当然也可以按照开始时间在每天内订购课程。 关于每个类的开始时间和结束时间,您会使用datetime字段还是整数字段? 如果是后者你将如何实现这一点? 期待阅读你们提出的不同建议。

使用Rails / ActiveRecord覆盖旧数据库中列的名称或别名

我正在针对遗留数据库编写Rails应用程序。 此旧数据库中的一个表具有名为object_id的列。 不幸的是, object_id也是Ruby中每个对象的属性,因此当ActiveRecord尝试使用这些对象来制定查询时,它使用Ruby定义的object_id ,而不是数据库中的值。 遗留应用程序是超过一百万行代码的巨大应用程序,因此只需更改数据库中列的名称将是最后的选择。 问题: 1.有没有办法让ActiveRecord / Rails使用此列的别名或同义词? 2. Ruby中是否有任何方法可以使object_id方法的行为有所不同,具体取决于谁调用它? 3.我可以简单地覆盖模型中object_id方法的行为(我认为这是一个可怕的想法,但不得不问) 任何建议都非常感谢。

Rails:has_many有额外的细节吗?

虽然我不是一个完整的Ruby / Rails newb,但我仍然很绿,我正在试图弄清楚如何构建一些模型关系。 我能想到的最简单的例子是烹饪“食谱”的想法。 配方由一种或多种成分和每种成分的相关数量组成。 假设我们在所有成分的数据库中都有一个主列表。 这表明两个简单的模型: class Ingredient < ActiveRecord::Base # ingredient name, end class Recipe < ActiveRecord::Base # recipe name, etc. end 如果我们只想将食谱与成分相关联,那就像添加适当的belongs_to和has_many 。 但是,如果我们想将其他信息与该关系联系起来呢? 每个Recipe都有一种或多种Ingredients ,但我们想要指出Ingredient的数量。 什么是Rails模型的方式? 这是一个像has_many through一样的东西吗? class Ingredient < ActiveRecord::Base # ingredient name belongs_to :recipe_ingredient end class RecipeIngredient < ActiveRecord::Base has_one :ingredient has_one :recipe # quantity end class […]

传递嵌套属性时,“NoMethodError(未定义方法`with_indifferent_access’for …”

谷歌搜索了一段时间,没有运气。 在传递嵌套属性时,我的Web服务上出现“NoMethodError(未定义方法`with_indifferent_access’”错误。 其他嵌套的工作,它们是一对一的,这是一对多… class Customer :destroy has_one :vehicle, :dependent => :destroy has_many :claims, :dependent => :destroy has_many :incidents, :dependent => :destroy accepts_nested_attributes_for :policy accepts_nested_attributes_for :vehicle accepts_nested_attributes_for :incidents end 工作正常: Processing QuotesController#create to xml (for 127.0.0.1 at 2010-12-12 15:16:33) [POST] Parameters: {“quote”=>{“customer_attributes”=>{“address1″=>nil, “city”=>”ggh”, “dob”=>nil, “address2″=>nil, “title”=>nil, “country”=>nil, “postcode”=>nil, “vehicle_attributes”=>{“mileage”=>nil, “registration”=>nil, “value”=>nil, “parking”=>nil}, “policy_attributes”=>{“breakdown”=>nil, “windscreen”=>”1”, “excess”=>nil}, “telephone”=>nil, […]

ActiveModel :: SecurePassword未定义方法`password_digest =’

我尝试按照http://bcardarella.com/post/4668842452/exploring-rails-3-1-activemodel-securepassword使用rails 3.1 ActiveModel :: SecurePassword 我最后得到了红灯…… user.rb class User { :on => :create } end factory.rb Factory.define :user do |f| f.email “foo@bar.com” f.password “foobar” f.password_confirmation { |u| u.password } end spec_user.rb describe User do it “should authenticate with matching username and password” do user = Factory(:user, :email => ‘frank@gmail.com’, :password => ‘secret’) User.authenticate(‘frank@gmail.com’, ‘secret’).should == […]

Rails App有3种不同类型的用户

我现在正处于应用的设计阶段。 主要是在纸上做一些事情来获得应用模型的洞察力,定义我需要的东西等等。 我发现有一个问题,我不知道如何解决,或者更具体,我不知道如何实现它以保持干燥。 所以这里是交易: 我有三个不同类型的用户/帐户的应用程序: 常规帐户 – 帐户在应用程序中具有基本权限的基本配置文件,具有常规帐户的用户可以查看每个人的公开个人资料,可以修改自己的个人资料,只能有1个个人资料图片,可以搜索等。 高级帐户 – 具有高级配置文件,这意味着用户可以指定联系信息,外观详细信息,有预订页面,可以获得优惠,有日历 公司帐户 – 包含公司简介,其中包含公司的联系信息,可以向高级用户提供报价,并可以浏览应用程序中的所有配置文件 基本上,我为所有用户提供了一个用户模型,我决定使用Devise进行身份validation。 创建用户后,我想向他/她显示一个他/她可以选择帐户类型的屏幕 – 常规,高级,公司。 之后,他/她将拥有系统中的适当权利以及适当的个人资料。 他将来无法在帐户类型之间进行更改。 我还要保持代码清洁干燥,我很难找到最好的解决方案。 现在我把头撞在墙上,因为我无法弄明白怎么做。 这是一个问题: 应该如何看待最终的模型图。 它应该是多态关联吗? 或者它应该只是一般: class User < ActiveRecord::Base devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable attr_accessible :email, :password, :password_confirmation, :remember_me, :account_type has_one :account has_one :entertainer has_one :company after_create :create_account def create_account if self.account_type […]

使用DataMapper get在Rails3控制器中处理404的最佳方法

这很简单,我想通过调用DataMapper来处理正常的[show]请求,就像我在Merb中所做的那样。 使用ActiveRecord,我可以这样做: class PostsController def show @post = Post.get(params[:id]) @comments = @post.comments unless @post.nil? end end 它通过捕获资源的exception来处理404。 相反,DataMapper不会自动执行此操作,因此我现在正在使用此解决方案解决此问题:[在答案中移动] 有可能告诉控制器在not_found函数内停止吗?