Tag: activerecord

如何在rails中保存ActiveRecord模型后获取id值

我有一个名为user的ActiveRecord模型(我在rails 2.3.8上),我将其保存为 user = User.new user.name = “user name” user.save! 我想要做的是在创建用户后获取生成的用户ID。 但目前它在保存时返回true / false值 如何获取已保存的用户ID?

将SQL查询转换为ActiveRecord Relation

如何将以下SQL查询转换为ActiveRecord关系,以便我可以使用范围扩展它? WITH joined_table AS ( SELECT workout_sets.weight AS weight, workouts.user_id AS user_id, workouts.id AS workout_id, workout_sets.id AS workout_set_id, workout_exercises.exercise_id AS exercise_id FROM workouts INNER JOIN workout_exercises ON workout_exercises.workout_id = workouts.id INNER JOIN workout_sets ON workout_sets.workout_exercise_id = workout_exercises.id ORDER BY workout_sets.weight DESC ), sub_query AS ( SELECT p.user_id, MAX(weight) as weight FROM joined_table p GROUP BY […]

有没有理由在ActiveRecord中使用数据库连接池?

使用外部连接池有什么好处? 我听说大多数其他应用程序将为每个工作单元打开一个连接。 例如,在Rails中,我认为这意味着每个请求都可以打开一个新连接。 我假设连接池会使这成为可能。 我能想到的唯一好处是它允许你拥有1,000个前端进程,而不需要运行1000个postgres进程。 还有其他好处吗?

ActiveRecord:我是否需要belongs_to和has_one

我有2个模型,即user和userprofile 。 用户和用户配置文件之间存在一对一的关系 。 class Userprofile < ActiveRecord::Base attr_accessible :fname, :lname, :iswoman, :age, :urlphoto, :user_id belongs_to: user end class User < ActiveRecord::Base attr_accessible :name, :provider, :uid has_one: userprofile end 我想知道我是否需要两个类来设置连接,或者只需要belongs_to或has_one就足够了? 对于其他方法也是如此,例如has-many 。

rails选择并包含

有谁能解释一下? Project.includes([:user, :company]) 这将执行3个查询,一个用于获取项目,一个用于获取这些项目的用户,另一个用于获取公司。 Project.select(“name”).includes([:user, :company]) 这将执行3个查询,并完全忽略选择位。 Project.select(“user.name”).includes([:user, :company]) 这将使用适当的左连接执行1个查询。 并且仍然完全忽略了选择。 在我看来,rails忽略带包含的select。 好的,但是为什么当我在select中放入一个相关的模型时,它会从发出3个查询切换到发出1个查询? 请注意,1查询是我想要的,我无法想象这是获取它的正确方法,也不是它的工作原理,但我不确定如何在一个查询中获得结果(.joins似乎只是使用我实际上并不想要的INNER JOIN,当我手动指定连接条件为.joins搜索gem时,我们正在尝试重新添加具有相同名称的连接。

如何将方法添加到activerecord集合?

我想为特定模型的所有集合添加一个方法。 假设我想将方法my_complicated_averaging_method添加到WeatherData集合中: WeatherData.all.limit(3).my_complicated_averaging_method() Station.first.weatherdata.my_complicated_averaging_method() 做这个的最好方式是什么? 目前,我找到的唯一方法是这样的: class WeatherData < ActiveRecord::Base def self.my_complicated_averaging_method weighted_average = 0 @relation.each do |post| # do something complicated # weighted_average = end return weighted_average end end 这是将方法添加到集合的好方法吗? 有没有更好/支持的方式来做到这一点?

ActiveRecord错误消息:字段的翻译

我已经使用http://guides.rubyonrails.org/i18n.html中指定的指令来翻译我的模型的字段,但标签不会被翻译。 我做错了什么。 我有一个带有字段name的User模型,我想把它翻译成巴西葡萄牙语(pt_br),所以我得到了我的pt_br.yml: pt_br: errors: “Erro!” activerecord: models: user: “Usuário” attributes: name: “Nome” address: “Endereço” errors: template: body: “Por favor, corrija os campos assinalados” header: “Dados inválidos” messages: blank: “é obrigatório” taken: “já existe” too_short: “incompleto” 当我到达带有表单的页面时: 我将这个字段标记为“名称”,而不是像我希望的那样标记为“Nome”。 我也有 config.i18n.default_locale = :pt_br 在我的环境中.rb 缺什么?

预约应用程序的DB模式:医生,约会,时间段,患者之间的正确关系是什么?

[更新的计划: http : //i.imgur.com/fX9CGNh.png ] 我的任务是开发一个专为小型医疗办公室设计的预约系统。 这是一个Rails 3.2应用程序。 我在设计一个对我有意义的数据库模式时遇到了困难。 问题: 鉴于以下信息,医生,患者,预约,椅子和时间段之间的正确关系是什么? 患者需要到医生办公室预约。 根据约会的类型,每个约会被安排为一个或多个相邻的time_slots,并且是否可以为具有相同start_time和end_time的time_slots安排两个约会由约会类型确定。 (根据约会类型允许双重预订。) 应用规格: 注册用户通过网站上的预约申请表进行预约。 约会占用相邻time_slots的某个预设量。 这由约会类别/类型决定。 管理员可以调整此长度,以及每个time_slot的长度。 为了帮助加快请求流程,在约会请求表单上的日历中隐藏了不可用/已预订的时间。 在面向管理员的界面上,管理员可以确认约会请求并进行预约,他们还可以更新,创建和删除预定约会。 所有约会都在“椅子”中举行 – 就像牙医的椅子一样。 办公室有多把椅子。 对于给定的预定时间段,每个椅子一名患者。 约会有日期,时间,长度约会类型,double_bookable的字段? (由appointment_type确定)。 Time_slots有一个start_time和end_time,以及一个日期。 这个办公室里只有一位医生。 但是,某些类型的约会 – 对文档的时间要求不高 – 可以加倍预订。 从本质上讲,可以在同一时间段预订两次牙齿清洁,只要它们被固定在**单独的椅子上**。 我的关系 : Office < ActiveRecord::Base has_many :doctors Doctor < ActiveRecord::Base has_many :patients belongs_to :offices Patient < ActiveRecord::Base belongs_to :doctor […]

validationRails中多对多关联的唯一性

假设我有Project ,与Tag有多对多关联。 我正在使用has_many,所以我有单独的连接模型。 如何创建validation,检查连接模型的唯一性? 现在我只有 has_many :tags, :through => :taggings, :uniq => true 但这不会在保存时validation。

Authlogic记录方法。 这是做什么的

我遇到了这种称为记录的方法,Ryan bates在他的authlogic Railscast中使用它并且似乎无法理解它的作用。 我已经阅读了文档,但我似乎无法遵循该帮助程序的用处。 def current_user return @current_user if defined?(@current_user) current_user_session && current_user_session.record end 我想知道的是,这只是从数据库中获取记录,为什么它与从数据库中获取数据的标准方式不同。 谢谢。