Tag: activerecord devise

Rails尝试在创建用户后创建配置文件

我正在试图弄清楚如何为刚刚创建的用户创建新的配置文件, 我在User模型上使用设计,User模型与UserProfile模型有一对一的关系。 这是我的用户模型的样子: class User ‘username’) end # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable end 这会产生以下错误: nil的未定义方法`new’:NilClass 我在rails c中尝试过User.find(1).user_profile ,这样可行,所以我很确定关系设置正确, 我可能是一个胖胖的大菜,并且试图错误地取自我。 你还可以告诉我如何访问模型中的参数…是否可能?

检查current_user是否是资源的所有者并允许编辑/删除操作

例: 用户A (id = 10)已创建照片资源 photo: (id: 1 user_id = 10, url: “http://…”) 现在,如果用户B (id = 20)转到此url: /photos/1/edit它可以编辑用户A的照片!!! Rails + Devise默认为此提供了一些东西? 这似乎是一个非常普遍的问题 我只需要允许任何用户只能编辑/删除它创建的资源(其中current_user == resource.user) 使用: Rails 4,设计 更新: 我想CanCan它太先进了。 我不需要角色或限制某些用户的某些操作

具有不同列Rails的相同模型

我有2个用户角色Developer和Driver 。 它们都属于User模型,但两者都有不同的细节,例如Developer有hourly_rate , skills , experience , full_name和Driver有cars_he_can_drive , hours_driven , full_name等。 它们有一些共同的列和一些不同的列。 是否应为每个用户提供单独的详细信息表( develop_details , driver_details )? 而且,可以与他们建立关系。 否则我可以在所有列中使用相同的模型并仅获取所需的列(其他将为零)。 更新我在用户表中使用角色as和整数,然后使用枚举。 我正在使用Rails 5和设计4.3.0。

在Rails外部包含用户模型时,未定义的方法’设计’

我正在开发一个包含两个部分的应用程序:一个ruby命令行应用程序和一个用于前端的Rails应用程序。 我一直在Ruby应用程序中使用ActiveRecord和Rails模型,通过以下方式单独包含它们: Dir[File.dirname(__FILE__) + ‘/../../RailsApp/app/models/*.rb’].each do |file| filename = File.basename(file, File.extname(file)) require_relative “../../RailsApp/app/models/” + filename end 并通过手动保存两个几乎相同的Gemfile文件的依赖项(我认为这不是最好的方法) 昨天我将Devise添加到Rails应用程序,现在当ruby应用程序尝试包含用户模型时,将出现undefined method devise for class 的消息undefined method devise for class 。 我在我的ruby应用程序的Gemfile中添加了devise gem,但错误仍在继续。 如果我理解正确,Devise是一个Rails引擎,这就是为什么它不是仅仅通过需要gem来加载的。 我读到在另一个应用程序中包含Rails模型的更好方法是要求使用environment.rb文件,但是当我尝试使用ActionMailer时出错: undefined method `action_mailer’ for # 如何用设计解决问题? 是否有更好的方法将Rails模型包含在另一个应用程序中,而不是我目前使用的那个以避免保留两个gemfiles? 谢谢

设计`find_first_by_auth_conditions`方法说明

我使用Devise的两种方法: 方法1 def self.find_first_by_auth_conditions(warden_conditions) conditions = warden_conditions.dup where(conditions).where([“lower(username) = :value OR lower(email) = :value”, {:value => signin.downcase }]).first end 方法2 def self.find_for_database_authentication(warden_conditions) conditions = warden_conditions.dup login = conditions.delete(:signin) where(conditions).where([“lower(username) = :value OR lower(email) = :value”, {:value => login.strip.downcase }]).first end 我的问题: 这段代码执行什么/做什么? login = conditions.delete(:signin) 如果没有上面的代码,我会得到一个错误undefined local variable or method signin