Tag: ruby on rail

设计:将现有访客用户转换为注册用户

我正在通过创建访客用户自动将每个新用户登录到站点中,如下所述: https://github.com/plataformatec/devise/wiki/How-To:-Create-a-guest-user 这允许每个用户在我的网站上使用一些基本的东西,例如创建评论。 现在,当用户决定注册时,我想将访客用户转换为注册用户。 我试图像这样实现我自己的User.new_with_session方法: def self.new_with_session(params, session) user = User.find(session[:guest_user_id]) user.name = params[:name] user.email = params[:email] user.password = params[:password] user.password_confirmation = params[:password_confirmation] user.created_at = nil user.updated_at = nil user.confirmed_at = nil user.guest = false user rescue ActiveRecord::RecordNotFound super end 但这不起作用。 不知何故,在提交表单时,设计似乎检测到用户已经存在于DB中,因此甚至不尝试对其进行validation等,而只是退出注册过程(因为它正在考虑用户)已经登录并转发到其他某个页面,这会导致“您需要在继续之前登录或注册”。 flash消息。 据我所知,这甚至在 Devise::RegistrationsController#create被调用之前发生了。 所以这是我的问题:有没有办法告诉Devise不要仅仅因为用户已经存在于DB中而认为用户已登录(尽管我不知道Devise在提交注册表后如何了解用户) ? 更新 我可以进一步追踪问题。 每当self.new_with_session返回持久记录时,注册过程就会被取消,如上所述。 返回新对象时,注册继续。 但我无法弄清楚这在哪里检查……!?

如何从rails模型生成plist?

我对ruby很感兴趣(在铁轨上),我无法想出这个; 将对象序列化为轨道中的plist的最佳方法是什么? 我正在使用rubyforge的plist库。 我有nested_attributes: class Deck deck has_many :cards accepts_nested_attributes_for :cards class Card belongs_to :deck 我已经尝试在甲板控制器中执行此操作: format.plist { render :plist => @deck.to_plist } 但我没有拿到卡片…… 类似于xml,我可以这样做: format.xml { render :xml => @deck.to_xml(:include => :cards) } 并获得所需的输出。 任何人都可以帮助或指出我正确的方向吗?

访问Devise Config变量

在我的Rails应用程序中,直接从视图访问Devise配置变量的方法是什么? 我想从Devise的:confirmable模块中显示config.allow_unconfirmed_access_for 。 此变量在devise.rb初始化程序中设置: Devise.setup do config.allow_unconfirmed_access_for = 3.days end 谢谢!

Rails +设计:尝试删除用户帐户

当我尝试在我的rails应用程序中删除我的帐户时,我得到了 没有路由匹配“/ users” 我的看法: We hate to see you go. “Are you sure?”, :method => :delete %>. 我的路线: user_registration POST /users(.:format) {:action=>”create”, :controller=>”devise/registrations”} new_user_registration GET /users/sign_up(.:format) {:action=>”new”, :controller=>”devise/registrations”} edit_user_registration GET /users/edit(.:format) {:action=>”edit”, :controller=>”devise/registrations”} PUT /users(.:format) {:action=>”update”, :controller=>”devise/registrations”} DELETE /users(.:format) {:action=>”destroy”, :controller=>”devise/registrations”} 我错过了什么吗?

用于条带库令牌的Rails 4表单语法 –

我正在建立一个市场,并有一个表单来收集卖家的银行账户详细信息,以便我们可以转账付款。 其中一个条带参数是卖家名称,它是表单上的输入。 当我提交表单时,控制器只有在已经存储在数据库中时才读取名称(即如果我在db中手动输入名称,则运行表单)。 如果名称尚不存在,则会出现错误消息,说我需要输入名称来创建条带标记。 如何更改表单/方法,以便在用户点击提交时该名称可用于条带? 这是我的更新方法:错误在以下行中:name => current_user.bankaccname 。 这是下面粘贴的表单中的输入。 def update Stripe.api_key = ENV[“STRIPE_API_KEY”] token = params[:stripeToken] recipient = Stripe::Recipient.create( :name => current_user.bankaccname, :type => “individual”, :bank_account => token ) current_user.recipient = recipient.id current_user.save respond_to do |format| if @user.update(user_params) format.html { redirect_to edit_user_url, notice: ‘Your account was successfully updated.’ } else format.html { render […]

如何异步发送来自Rails应用程序的所有电子邮件

我有一个使用delayed_job的rails应用程序。 虽然DJ给了我一个非常简单的方法来设置电子邮件的延迟,有没有办法全局配置我的应用程序异步发送所有电子邮件,无论如何? 这样做的原因是我有一些发送电子邮件的gem,并且不想修改它们以接受DJ。

如何编写范围以在嵌套模型上搜索属性?

我有一个患者模型has_many:入院。 我想为患者模型创建一个范围,该范围将返回目前被录取的所有患者。 如果患者的任何入院时间为零,则确定患者入院。 通过迭代患者并检查每次入院,我可以在应用程序中轻松地做到这一点,但似乎我应该让数据库执行此操作。 我之前没有写过这样的范围。 有什么建议? (我在开发中使用sqlite3,在生产中使用postgresql,以防某些SQL需要 – 我希望不是)

AssetTagHelper :: image_path外部视图

据推测, ActionController::Base.helpers就像一个代理,用于访问视图外的助手。 然而,那里定义的许多方法依赖于控制器变量,我无法成功调用: ActionController::Base.helpers.image_path(“my_image.png”) >> TypeError Exception: can’t convert nil into String 在源头挖掘我看到compute_asset_host方法试图访问config.asset_host但是config为nil 。 如何从外部视图成功调用image_path ?

Rails 2.3.5和Omniauth之间的不兼容性

我使用Rails 2.3.5并且想要使用Omniauth但是我不能让它们一起工作,因为rails 2.3.5要求Rack 1.0.1和Omniauth(版本0.1.6)需要Rack 1.1 我在Heroku上部署,所以我不相信我可以入侵Rails并删除对Rack 1.0.1版本的硬依赖。 任何帮助非常感谢。 保罗

你如何在Rails 2.2上实现OmniAuth?

我正在尝试使用Omniauth为现有的Rails 2.2应用程序实现Facebook和Twitter身份validation。 到目前为止,我还没有找到任何关于如何在Rails 2.2中做到这一点的建议 – 因此这个问题。 我有两个问题要问 – 我知道从2.3引入了对Rails的Rack支持,我相信OmniAuth需要Rack。 那么甚至可以在Rails 2.2网站上使用OmniAuth,为什么呢? 如果可以实现OmniAuth – 你会怎么做?