Tag: activerecord

编辑表中的多行(更新多个记录)

我在Payments#index中有一个付款记录列表。 我被要求直接编辑该表,并有一个按钮保存所有更新。 到目前为止,我只是部分设法通过将每行包装在该记录的form_for中来实现这一点,如下所示: 是否可以编辑所有记录然后有一个更新按钮而不必单独保存每条记录? 如果是这样,我该怎么做呢?

新分配的序列不起作用

在PostgreSQL中,我创建了一个新表并为id列分配了一个新序列。 如果我从PostgreSQL控制台插入一条记录它可以工作,但是当我尝试从Rails导入一个记录时,它会引发一个exception,它无法找到相关的序列。 这是表格: \d+ user_messages; Table “public.user_messages” Column | Type | Modifiers | Storage | Description ————-+—————————–+————————————————————+———-+————- id | integer | not null default nextval(‘new_user_messages_id’::regclass) | plain | 但是当我尝试使用Rails使用的SQL查询获取序列时,它返回NULL: select pg_catalog.pg_get_serial_sequence(‘user_messages’, ‘id’); pg_get_serial_sequence ———————— (1 row) Rails引发的错误是: UserMessage.import [UserMessage.new] NoMethodError: undefined method `split’ for nil:NilClass from /app/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:910:in `default_sequence_name’ 仅当我使用ActiveRecord扩展名导入批量记录时,才会出现此问题,单个记录通过ActiveRecord保存。 我如何解决它?

Rails:运行迁移等rake任务

我的开发团队需要更精确地执行rake任务。 某些任务只需在特定代码更改后运行一次。 在没有太具体的情况下,在代码中实现新用户的新业务规则之后,需要更新某些现有用户记录。 我们喜欢迁移如何使用db表进行日志记录。 是否有类似的工具用于rake任务? 我们可以破解Rails’/ ActiveRecord的迁移系统以进行rake任务吗? 我们不希望将与db相关的迁移与rake任务混合在一起,因此任何明确保持这些迁移的解决方案都会很棒。 谢谢。

ruby on rails在活跃记录中获得双向朋友关系?

我试图弄清楚如何做一个相互的双向关系,即: user_id friend_id 1 2 2 1 在上面的用户1和用户2将是朋友,如果user_id = 1都具有friend_id = 2并且friend_id = 2具有user_id = 2作为表中的朋友。 如何计算ActiveRecord中的所有双向相互关系?

ORDER BY使用Active Record&Rails有时为空的列

在我的rails应用程序中(使用postgresql),我正在尝试编写一个Active Record查询来查找一组志愿者记录,然后通过first_name , last_name ,然后email进行last_name 。 此外, first_name和last_name可能为null (两者都将为null或两者都不为null )。 例如,我想跟踪列表进行如此排序: 志愿者[first_name:’Alex’,last_name:’Diego’,电子邮件:’a.diego@person.com’] 志愿者[first_name: null ,last_name: null ,电子邮件:’cxxr@person.com’] 志愿者[first_name:’Josh’,last_name:’Broger’,电子邮件:’broger@person.com’] 志愿者[first_name:’Josh’,last_name:’Broger’,电子邮件:’jcool@person.com’] 志愿者[first_name:’Josh’,last_name:’Kenton’,电子邮件:’aj@person.com’] 最初,我有以下代码: Volunteer.joins(:volunteer_lists). where(“(volunteer_lists.organizer_id = ? AND organizer_type = ‘Organization’) OR (volunteer_lists.organizer_id IN (?) AND organizer_type = ‘Collaborative’)”, self.organization.id, collaboratives).uniq. order(:first_name, :last_name, :email) 此代码有效,除了结果由志愿者首先使用first_name和last_name进行分组,其他志愿者仅使用最后email (因此在上面的示例列表中,志愿者#2将是最后一个)。 这个有用的post的答案表明我应该在语句的ORDER BY部分使用COALESCE()函数来获得我想要的结果。 真棒! 所以我将我的代码更新为以下内容: Volunteer.joins(:volunteer_lists). where(“(volunteer_lists.organizer_id = ? AND organizer_type = […]

Rails 3:如何查找字段可能等于nil的记录?

我想找到maiden_name等于SongWriter的所有my_maiden_name ? 注意: my_maiden_name可能nil 我试过了: SongWriter.where(“maiden_name = ?”, my_maiden_name) 除了my_maiden_name = nil的情况外,它工作正常。 当my_maiden_name = nil ,生成的查询为: SELECT `song_writers`.* FROM `song_writers` WHERE (maiden_name = NULL) 而不是: SELECT `song_writers`.* FROM `song_writers` WHERE maiden_name IS NULL 如何概括活动记录查询以包含案例my_maiden_name = nil ?

ActiveRecord模型中的复杂关联

我试图了解ActiveRecord如何处理比简单的has_many , belongs_to等更复杂的关联。 例如,考虑一个用于录制音乐演出的应用程序。 每个Gig都有一个Band,它有一个类型。 每个Gig还有一个Venue,它有一个Region。 在MS Access的粗略表示法中(我突然开始感到非常怀旧),这些关系会像这样呈现出来 1 ∞ 1 ∞ ∞ 1 ∞ 1 Genre —- Band —- Gig —- Venue —- Region 我希望能够找到,例如,在一个地区玩过的所有乐队,或所有主持某种类型的场地。 理想情况下,我的模型将包含此代码 class Genre has_many :bands has_many :gigs, :through => bands has_many :venues, :through => :gigs, :uniq => true has_many :regions, :through => :venues, :uniq => true end class Band […]

在Rails模型中; 保存到DB时,符号会自动转换为YAML。 什么是正确的方法?

在我的模型示例Game中,有一个状态列。 但我通常使用符号设置状态。 例 self.status =:活跃 MATCH_STATUS = { :betting_on => “Betting is on”, :home_team_won => “Home team has won”, :visiting_team_won => “Visiting team has one”, :game_tie => “Game is tied” }.freeze def viewable_status MATCH_STATUS[self.status] end 我使用上面的Map在可查看状态和反之间切换。 但是,当数据保存到db时,ActiveRecord会将“—”附加到每个状态。 因此,当我回收时,状态被搞砸了。 什么应该是正确的方法?

一次将多个记录插入模型

我正在寻找一些最佳实践,当涉及到将数据插入到模型中时,尤其是当要创建大量记录时,到目前为止,我正在检索一些XML并将其保存到模型中 doc = Nokogiri::XML.parse(open(url)) doc.xpath(‘//xmlns:feed/xmlns:entry[xmlns:title[node()]]’).each do |s| cid = s.xpath(“xmlns:id”).text email = s.xpath(“gd:email/@address”).text name = s.xpath(“xmlns:title”).text data = Contact.new( :cid => cid, :email => email, :name => name) data.save end 现在这是逐个插入记录,这在我看来花了太长时间。 我已经读过一个解决方案是使用事务,或者我可以进行单个质量插入? 我的问题是,我将从哪一方面受益最多,以及如何格式化我已经拥有的每一项? 看到我当前设置到新设置的示例将使我受益,因为我将能够更多地理解它并实际从中学习 任何帮助赞赏 谢谢

无法创建新的Spree应用程序:“未定义的方法`raise_in_transactional_callbacks =’”

我几个月前就遇到过这个问题, 将它发布在Spree的GitHub页面上 ,然后自己想出了解决方案并将其发布在同一个问题上。 两个月后,我仍然会收到来自Google员工同样问题的评论,因为我有同样的错误信息,所以我觉得值得在这个网站上发布我的解决方案,以防万一有人遇到同样的问题但是看不出来在GitHub上。 问题:尝试按照Spree文档中的确切说明创建一个全新的Spree应用程序,当您尝试运行spree install –auto-accept时,会出现以下错误spree install –auto-accept或rails g spree:install : undefined method `raise_in_transactional_callbacks=’ for ActiveRecord::Base:Class (NoMethodError) 以下方案…