Tag: ruby on rail

Rails – 使用另一个类方法中的类方法和第二个类的一个属性

这是我的问题:我的User类中有一个类方法。 我是从我的Shop类中的类方法调用它。 问题是,User类方法需要商店的属性group_id(Group是第三类)。 我的User类方法无法正常工作(请参阅Rails 3范围 – 查找不在特定组中的用户 ),因为它返回任何内容但它应该返回一些内容。 我的代码目前看起来像这样: class User #… # Retrieve all users not in a specific group # example: User.not_in_group(Group.find(5)) def self.not_in_group(groupid) includes(:group_users).where(“group_users.group_id != ?”, groupid) end end class Shop belongs_to :group attr_accessible :group_id def self.get_users_not_in_shop_group User .not_in_group(:group_id) end 在我的日志中,我得到: …AND (group_users.group_id != ‘group_id’) … 我相信我应该得到类似的东西: …AND (group_users.group_id != 13) … […]

Rails App Refinery + Devise:无法访问Devise视图

新手Rails开发者在这里。 我正在尝试创建一个使用Devise进行身份validation和使用Refinery进行内容管理的应用。 我已经按照这些教程: http://sdownie.com/blogs/integrating-refinery-rails-3-2-into-your-existing-rails-app http://refinerycms.com/guides/with-an-existing-rails-31-devise -app 我无法访问该网站上的任何Devise视图。 例如,当我转到/ users / sign_in时,我得到404.在我的服务器日志中,我看到以下内容让我认为Refinery正在处理请求而不是Devise路由: Processing by Refinery::PagesController#show as HTML Parameters: {“path”=>”users/sign_up”} … Filter chain halted as :find_page rendered or redirected Completed 404 Not Found in 39ms (Views: 32.8ms | ActiveRecord: 1.6ms) 知道如何纠正这个并访问Devise sign_in / sign_up视图吗? 这是我的第一个stackoverflow问题,所以如果我需要添加更多具体信息,请告诉我。 非常感激

Rails设计注册表单不接受自定义用户名字段

我正在尝试为我的设计安装添加一个用户名,一个Railscast插曲。 我已将该字段添加到我的用户模型中,但是当我尝试使用用户名创建新用户时,表单操作会一直尝试将空值传递给我的数据库,这会引发错误。 这是我的用户模型的架构: create_table “users”, :force => true do |t| t.string “username”, :null => false t.string “email”, :default => “”, :null => false t.string “encrypted_password”, :limit => 128, :default => “”, :null => false t.string “password_salt”, :default => “”, :null => false t.string “reset_password_token” t.string “remember_token” t.datetime “remember_created_at” t.integer “sign_in_count”, :default => 0 t.datetime “current_sign_in_at” […]

终端说delayed_job开始,但没有做任何事情

我有一个应用程序在我的本地机器上完美运行,现在正在部署它。 我有VPS全部设置,它也很有效。 我的问题来自无法启动delayed_job。 我做了“ruby脚本/ delayed_job启动RAILS_ENV =生产”,同时SSHd到应用程序,它返回“delayed_job:进程与pid 11547启动。” 当我在htop中查找过程时,我找不到它。 所以我挖了一遍,读到Monit可以保持delayed_job继续。 我把它设置了,希望我能以这种方式启动delayed_job。 但是没有delayed_job.pid,所以我没有走远。 我最终在其中设置了nginx和mysql,并且想完成设置delayed_job。 缺少delayed_job.pid会妨碍。 当我通过SSH连接到应用程序并运行“rake jobs:work RAILS_ENV = production”时,一切正常。 所以我很确定应用程序本身很好。 我正在使用collectiveidea的delayed_job。 谢谢你的帮助。

如何通过ngrok访问子域?

我有一个带有“api”子域的rails站点。 我本地计算机上的路由如下所示: http://mysite.dev #<– normal web stuff http://api.mysite.dev #<– my api 如何映射这两个子域? 这是我的ngrok配置文件,但api端点似乎指向基本域。 tunnels: web: subdomain: “my-project” proto: http: mysite.dev:5000 api: subdomain: “api.my-project” proto: http: api.mysite.dev:5000

设计:能够将参数传递给注册#sign_up动作

偶尔我们会向我们的潜在客户发送定制的注册链接。 该链接包含的参数可用于预填充注册表单。 http://www.example.com/users/sign_up?user[company_name]=Foo&user[region]=NA 我们的注册表包含接受公司名称和地区的字段。 哪个可以根据注册链接预先填写。 这应该在实践中起作用,但它不是由于registrations#new动作的实现方式。 新操作使用空哈希调用build_resource方法。 def new resource = build_resource({}) respond_with resource end 当输入为非零时,build_resource方法忽略resource_params 。 def build_resource(hash=nil) hash ||= resource_params || {} self.resource = resource_class.new_with_session(hash, session) end 我不得不在我的注册控制器中超越new动作来克服这个问题。 我不喜欢我的解决方案,因为它很脆弱。 def new resource = build_resource respond_with resource end 是否有理由使用空哈希调用new操作? 是否可以使用空哈希调用(如在create操作中)?

Rails会在24小时内过期密码

在我的rails 3.1应用程序中,我想为用户创建并过期随机密码。我正在使用devise gem.Any插件可用于expiring password吗? 或者请给我一些合理的建议来实现这个function。 请认为我是新手。

Rails:设计:如何编辑用户信息?

我有一个使用Devise设置的Rails应用程序,带有注册控制器。 到目前为止有什么工作: 新用户注册登录注销主页关于确认密码重置 不工作是编辑,因为我无法弄清楚我应该进行的URL / REST调用以进行编辑显示。 我有一个views / registrations / edit.html.erb页面。 以下是我的路线中特定于注册的部分: cancel_user_registration GET /cancel(.:format) registrations#cancel user_registration POST / registrations#create new_user_registration GET /request_invite(.:format) registrations#new edit_user_registration GET /edit(.:format) registrations#edit 以下是我的routes.rb中特定于设计的部分: devise_for :users, :controllers => { :registrations => ‘registrations’, :confirmations => ‘confirmations’ }, :path => ”, :path_names => { :sign_in => “login”, :sign_up => “request_invite” } 我尝试了以下方法: […]

Rails精度错误

当我在我的Rails应用程序中运行它时: my_envelope.transactions.sum(:amount) 此SQL显示在日志文件中: SQL (0.3ms) SELECT SUM(“transactions”.”amount”) AS sum_id FROM “transactions” WHERE (envelope_id = 834498537) 并返回此值: 如您所见,该值为25.159999。 它应该是25.16。 当我自己在数据库上运行相同的SQL时,返回正确的值。 我有点困惑,因为我知道浮点数有精确问题,但它返回一个BigDecimal。 SQL列类型是十进制。 我正在使用sqlite3(3.6.17)和sqlite3-ruby(1.3.2)。 有任何想法吗? 更新1 以下是使用SQLite3-ruby接口直接运行时的结果。 $ rails c test Loading test environment (Rails 3.0.3) irb(main):001:0> db = SQLite3::Database.new(“db/test.sqlite3”) => # irb(main):002:0> db.execute(“SELECT SUM(amount) FROM transactions WHERE envelope_id = 834498537”) => [[25.159999999999997]] 该数字的类是Float。 顺便说一句,它总和的三个数字是-40.25,100和-34.59。 更新2 经过更多的研究,结果certificate这就是sqlite3的工作方式。 […]

使用Devise更新密码后,如何让用户保持登录状态?

每当用户更新其密码时,它都会向用户签名并要求他们再次登录。 这是我的行动 users_controller.rb def update @user = User.find(params[:id]) if @user.update user_params sign_in @user, bypass: true # for some reason Devise signs the user out redirect_to @user http://www.rubydoc.info/github/plataformatec/devise/Devise/Controllers/SignInOut#sign_in-instance_method 我也试过了sign_in @user , sign_in @user 。 我尝试了没有sign_in但这也没有用。 我看到了这个答案,但它没有帮助: Devise在密码更改后注销用户 。 没有密码更新用户正常。 (有些代码没有显示。) 设计3.4.1。