小编tri*_*nia的帖子

使用find_or_create接受_ented_attributes_for?

我正在使用Rails的accepts_nested_attributes_for方法取得了巨大的成功,但是如果记录已经存在,我怎么能创建新的记录呢?

举例来说:

假设我有三个模型,团队,会员和玩家,每个团队都有很多玩家通过会员资格,玩家可以属于很多团队.然后,团队模型可以接受玩家的嵌套属性,但这意味着通过组合团队+玩家形式提交的每个玩家将被创建为新的玩家记录.

如果我只想以这种方式创建一个新的播放器记录,如果还没有同名的播放器,我应该怎么做呢?如果具有相同名称的玩家,没有新玩家记录应当建立,而是正确的玩家应该发现并用新的球队纪录有关.

forms validation activerecord ruby-on-rails

54
推荐指数
4
解决办法
1万
查看次数

旧的ActionMailer模板被缓存?

我们正在运行带有Passenger独立+ nginx和ruby 1.9.2-p290的Rails 3.0.7应用程序,我们看到最奇怪的事情发生了:在将一些更新部署到邮件程序模板之后,有时来自应用程序的新邮件应用更新,有时使用旧模板.

我在网上找不到任何关于缓存的ActiomMailer模板的东西,而且运行rake tmp:cache:clear也没有解决这个问题,fwiw.

有没有人经历过这样的事情?这个问题有明确的解决方案吗?

谢谢,

雅各

templates caching ruby-on-rails actionmailer

8
推荐指数
1
解决办法
1131
查看次数

持续集成建议?

我正在为我的Rails应用程序设置一个持续集成服务器(使用Integrity),我想建议:

  • 大多数人设置CI来构建和测试他们的应用程序,每次推送到他们的中央SCM存储库,或者只有在推送到他们的临时分支时?
  • 我将使用CI服务器自动运行flay,flog,reek和rcov - 我应该运行其他任何测试或代码覆盖工具吗?
  • 我打算在Slicehost上部署我的应用程序.我是否应该在单独的Slicehost切片上设置CI服务器,该切片设置为与生产切片相同(wrt安装了宝石,库等)?
  • 如果我使用一个单独的切片CI,有没有在使用CI切片中的临时服务器以及任何危害?

亲切的问候,

雅各

ruby git testing continuous-integration ruby-on-rails

6
推荐指数
1
解决办法
799
查看次数

多阶段部署建议?

Web应用程序的多阶段部署有哪些最佳实践和一般理论?

我对使用Git,Capistrano和Passenger部署Rails应用程序特别感兴趣,我发现帖子讨论了这个过程的细节:

我应该考虑每个阶段(测试,分期,生产)?这些阶段应该部署到不同的物理服务器吗?有关多阶段部署的任何提示或建议?我应该留意哪些障碍?

最好,

雅各

git deployment capistrano ruby-on-rails

5
推荐指数
1
解决办法
1969
查看次数

accepted_nested_attributes_for通过连接表与连接上的属性

在为连接表添加属性时,如何在has_many:through关联中使用ActiveRecord的accepts_nested_attributes_for帮助程序?

例如,假设我有一个团队模型:

class Team < ActiveRecord::Base
  role = Role.find_by_name('player')
  has_many  :players,
            :through    => :interactions, 
            :source     => :user, 
            :conditions => ["interactions.role_id = ?", role.id] do
              class_eval do
                define_method("<<") do |r|                                                             
                  Interaction.send(:with_scope, :create => {:role_id => role.id}) { self.concat r }
                end
              end
            end
end
Run Code Online (Sandbox Code Playgroud)

团队已经players完成了interactions,因为用户可以占据多个角色(玩家,经理等).

如何在连接表中添加属性的同时使用accepts_nested_attributes_for?

如果我有现有的团队记录team和现有的用户记录user,我可以这样做:

team.players << user
team.players.size 
=> 1
Run Code Online (Sandbox Code Playgroud)

但是如果我用嵌套播放器创建一个新团队:

team = Team.create(:name => "New York Lions", 
                   :players_attributes => [{:name => 'John Doe'}])
team.players.size
=> 0
Run Code Online (Sandbox Code Playgroud)

在最后一个示例中,创建了团队,用户和交互记录(团队确实让用户通过交互),但此处未设置interact.role_id属性.

activerecord ruby-on-rails

5
推荐指数
1
解决办法
1940
查看次数

Mailchimp“invalid_grant”错误

我正在尝试使用 Mailchimp 的 OAuth 实现完成身份验证,并且我的访问令牌请求收到“invalid_grant”错误。

使用 ruby​​ HTTParty gem,我将数据发布到 Mailchimp:

  url = 'https://login.mailchimp.com/oauth2/token'
  result = HTTParty.post(url,
                         body: {
                            grant_type: 'authorization_code',
                            client_id: ENV["MAILCHIMP_ID"],
                            client_secret: ENV["MAILCHIMP_SECRET"],
                            code: auth_hash.credentials.token,
                            redirect_uri: 'https://requestb.in/1jrbjmi1',
                         },
                         headers: {
                            'Accept': 'application/json'
                         })
Run Code Online (Sandbox Code Playgroud)

在哪里:

  • grant_type 是“authorization_code”
  • 客户端 ID 和机密是我在 Mailchimp 上设置我的应用程序时给我的值
  • 代码是从(成功的)OAuth 身份验证返回给我的令牌

有没有人遇到过这种错误?知道如何修复它吗?

ruby ruby-on-rails oauth mailchimp

5
推荐指数
1
解决办法
672
查看次数

将标签与acts_as_taggable_on合并为Rails gem

我在我的Rails应用程序中使用acts_as_taggable_on,我想了解合并两个标签的最佳方法的建议.

例如,如果我有食物记录列表,有些标记为"奶酪",有些标记为"牛奶",那么将这些标记组合成单个"乳制品"标签的最佳方法是什么.我应该只找到标有"奶酪"和/或"牛奶"的所有记录,用新的"乳制品"标签标记这些记录,并删除"奶酪"和"牛奶"标签和标签,或者是否有更好的方法做这个?

我查看了gem的文档和规范,我没有看到任何组合多个标签的专用方法.如果我按照上面提出的多步路线进行操作,如果其中一个步骤失败(如果某些记录因任何原因未被标记为"乳制品")和"奶酪"标签,我是否会冒着弄乱标签的风险?被"删除"?

tagging ruby-on-rails acts-as-taggable-on

2
推荐指数
1
解决办法
733
查看次数

回形针和S3:多个缩略图尺寸不保存

我正在使用Paperclip来处理我的Rails应用程序的图像上传,当我使用系统存储时它工作得很好:多个缩略图大小(Paperclip用语中的"样式")保存到文件中,我可以通过传递它来访问它们中的任何一个样式名称为url方法.

但是,当我将应用程序设置为在S3上存储图像时(使用aws-s3 gem),我的S3存储桶中只存储了一个图像.对于它的价值,只存储列出的最后一种样式.所以,如果在我的模型中,我有:

  has_attached_file :photo,
                :styles         => { :large  => "1000x1000>", 
                                     :medium => "600x600>", 
                                     :thumb  => "200x200>" },
                :storage        => :s3,
                :s3_credentials => "#{Rails.root}/config/s3.yml",
                :bucket         => AppConstants.bucket,
                :path           => "pictures/:id/:filename"
Run Code Online (Sandbox Code Playgroud)

只有"拇指"大小才会保存到S3.

有没有人遇到过类似的问题?我怎样才能解决这个问题?

upload ruby-on-rails amazon-s3 paperclip

2
推荐指数
1
解决办法
1522
查看次数