Tag: ruby on rails 4

Rails 4路由约束仅包含查询字符串或数字

我正在尝试使用约束来实现这两个路由: get “products/:id”, to: “products#show”, constraints: { id: /\d/ } get “products/:name”, to: “products#search”, constraints: { name: /[a-zA-Z]/ } 第一个路由应使用localhost:3000/products/3等URL触发,最后一个路径应使用localhost:3000/products/?name=juice触发。 不起作用,我搜索了很多关于这个问题,但我似乎找到了Ruby on Rails的第二个或第三个版本的解决方案,现在大多数都被弃用了。 有任何想法吗? 谢谢。

如何通过连接表中的条件接收对象

我有桌子Games和Badges他们通过表BadgesGames连接。 t.integer “badge_id” t.integer “game_id” t.boolean “shown”, default: false 我有Game对象,我想要找到所有未shown Badges game_object.(condition?).badges 怎么弄呢?

将Object转换为hash,然后将其保存到用户列

无法找到我正在尝试做的事情。 我想将一个对象存储到用户的列中。 该列采用数组的forms: #postgres def change add_column :users, :interest, :string, array: true, default: ‘{}’ end 我有另一个名为FooBar的模型用于其他用途。 当我添加了user_id键时,每个用户都有唯一的信息。 我想要更有意义: def interest @user = User.find(current_user.id ) # I need the logged in user’s id @support = Support.find(params[:id]) # I need the post’s id they are on u = FooBar.new u.user_id = @user u.support_id = @support u.save # […]

如何在没有设计的情况下设置acts_as_votable?

我正在关注这篇文章 (我试图让人们投票而不登录,1投票/ ip)当我按下upvote按钮时,我收到以下错误: CommentsController中的NoMethodError #upvote未定义方法`find_or_create_by_ip’for# 提取的来源(第7行): 5 @comment = Comment.find(params[:id]) 6 session[:voting_id] = request.remote_ip 7 voter = Session.find_or_create_by_ip(session[:voting_id]) 8 voter.likes @comment 9 flash[:message] = ‘Thanks for voting!’ 10 respond_to do |format| 我跟踪了post中的所有内容,创建了一个Session模型并将所有代码添加到我的文件中。 这是我的代码: #routes.rb Rails.application.routes.draw do resources :posts do resources :comments do member do post :upvote end end end root “posts#index” end #models: class Post […]

Rails 4 has_many nested_attributes来替换所有

我想使用nested_attributes来替换所有旧的关联对象。 最好的方法是怎样做的? 如果我使用下面的代码,每次使用nested_attributes更新主对象时,都会创建关联的新对象。 accepts_nested_attributes_for :days 编辑 我在下面的before_validation回调中得到了它: def replace_days db_days = days.where(‘id IS NOT NULL’) all_days = days all_days -= db_days self.days = all_days end 问题在于我对子模型的独特validation。 Rails将进入数据库以validation唯一性。 由于在validation时我的替换不在数据库上,因此得到了validation错误。 不知道如何绕过这个,如果这是最好的方法。 我希望rails有一些本机function或参数可以帮助我完全按照自己的意愿行事。

Rails validate_association与模型的错误消息

我使用模型中的validates_associated来使用其他模型的validation代码。 这个问题是validation失败的消息是“..无效”。 我想将模型validation失败的实际描述性错误冒出来! 我发现了这个问题: 与模型的错误消息相关的validation 这看起来像一个非常接近的解决方案: module ActiveRecord module Validations class AssociatedBubblingValidator value)) end end end end end module ClassMethods def validates_associated_bubbling(*attr_names) validates_with AssociatedBubblingValidator, _merge_attributes(attr_names) end end end end 但实际上它遇到了一个错误: undefined method `valid?’ for # 任何人都可以帮助完成这个几乎工作的工作!? 完整的错误跟踪是: undefined method `valid?’ for # Extracted source (around line #6): 4 5 6 7 8 9 def validate_each(record, […]

Rails 4:form_for与关联

新的铁轨和ruby。 与form_for和协会一起苦苦挣扎。 我正在尝试设置一个rails应用程序,允许用户从客户列表中进行选择。 客户端通过has_many :through关系关联。 我让模型按预期工作,我可以通过rails控制台将用户添加到用户。 我现在想将此function移动到Web界面。 下面的代码是我尝试过的方式,但它对我来说没有意义。 我不确定哪个控制器操作是正确的操作。 我应该在客户端的创建操作中处理表单POST吗? 我实际上并不想创建新客户端,我只希望用户从现有客户端列表中进行选择并创建关联。 我的模型如下: class Client :user_clients has_many :user_clients, :dependent => :destroy end class User :user_clients has_many :user_clients, :dependent => :destroy end class UserClient < ActiveRecord::Base belongs_to :user belongs_to :client end 路线如下 resources :clients do resources :users end resources :users do resources :clients end 客户端控制器 class ClientsController […]

使用ActiveAdmin的DSL与共享模块包括

我正在尝试为使用ActiveAdmin注册的模型进行一些常见/共享操作。 我有以下代码: # app/admin/concerns/activatable.rb module Activatable def self.included(dsl) dsl.member_action :deactivate, method: :put do dsl.resource.deactivate! redirect_to dsl.resource_path, notice: ‘Deactivated.’ end end end # app/admin/course.rb ActiveAdmin.register Course do include Activatable # … end 当我运行rails server ,服务器立即退出抛出以下内容: /Users/Doug/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.1/lib/active_record/ dynamic_matchers.rb:26:in `method_missing’: undefined method `member_action’ for # (NoMethodError) DSL似乎与我的course.rbfunctioncourse.rb ,其中来自activatable.rb的代码工作正常(尽管没有dsl.* )。 有任何想法吗?

设计 – 在开发中删除用户确认

如何在开发中跳过用户确认。 我已经设置了生产环境以使用SendGrid发送电子邮件,但现在我已经完成了它不会让我登录。 谢谢你的时间!

使用carrierwave上传到S3时获取mp3持续时间

我正在写一个应用程序,它基本上是一个音乐平台。 我希望通过其元数据获取mp3的持续时间并将其保存在表中,然后再将其上传到S3。 我使用了载波和雾gem的组合来上传。 提取mp3元数据以保存到数据库的推荐方法是什么?