我遇到了一个奇怪的问题.
undefined method `values' for #<ActionController::Parameters:0x007fb06f6b2728>
Run Code Online (Sandbox Code Playgroud)
是我得到的错误,当我将变量分配给param哈希,并尝试获取它的值.
attributes = params[:line_item][:line_item_attributes_attributes] || {}
attributes.values
Run Code Online (Sandbox Code Playgroud)
该参数看起来像哈希的散列:
{"0"=>{"product_attribute_id"=>"4"}, "1"=>{"product_attribute_id"=>"7"}}
Run Code Online (Sandbox Code Playgroud)
现在,当我在控制台中执行此操作并将其分配给变量属性时,它可以完美地工作.所以我很难理解这里没有的东西 - 以及如何让它发挥作用.
我即将对我的应用程序执行更新,我想要注销所有记住会话的用户.我的意思是,一旦我部署更新,我想强制所有用户再次登录.
最好的方法是什么?
我能够成功设置ActionCable,收听频道,验证请求等等.但是,在创建后尝试连接到频道时,我遇到了一个奇怪的错误(很难解释,见下文)
我有一个设置,一个配置文件有一个墙,墙上有很多帖子.每个帖子都有自己的频道,墙本身也有自己的频道.在墙上创建帖子时,会通过ActionCable进行更新:
# Wall's Cable Channel
class WallsChannel < ApplicationCable::Channel
def subscribed
profile = Profile.find_by_id params[:id]
if ability.can? :subscribe, profile
stream_from "Wall(#{profile.id})"
else
reject
end
end
end
# Broadcasting to the wall
ActionCable.server.broadcast 'Wall(:id:)', { :data: }
# Client Side
GlobalCable.cable.subscriptions.create({channel: 'WallsChannel', id :id: }, {
received: function(data) {
// do stuff with a new post on a wall
}
});
Run Code Online (Sandbox Code Playgroud)
我简化了它,但这可以按预期工作.创建新帖子时,墙上频道会被触发,客户端会收到帖子和所有商品.
问题是连接广播的新帖子.当我去听新帖子时,它无法从数据库中获取帖子:
# Posts Cable Channel
class PostsChannel < ApplicationCable::Channel
def subscribed
post = Post.find_by_id params[:id]
if ability.can? :subscribe, …
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序需要三个用户类型(用户,代理,管理员)登录并需要不同的设计模块.
User AgentAdmin AdminUser
confirmable Yes Yes No
lockable Yes Yes No
timeoutable No Yes Yes
Omniauthable Yes No No
database_authenticatable Yes Yes Yes
recoverable Yes Yes No
rememberable Yes Yes No
trackable Yes Yes Yes
validatable Yes Yes Yes
Run Code Online (Sandbox Code Playgroud)
此外,这些用户可以根据其类型添加其他列.所以,我想根据类型创建不同的表.
根据我的要求,我决定来处理AgentAdmin
,并AdminUser
与ActiveAdmin有不同的命名空间(联系管理员AdminUser
,代理AgentAdmin
).我已经配置authentication_method
,current_user_method
并logout_link_path
为这两个命名空间,如下.
config.load_paths = [File.join(Rails.root,'app','admin'), File.join(Rails.root,'app','agent')]
config.namespace :admin do |admin|
admin.authentication_method = :authenticate_admin_user!
admin.current_user_method = :current_admin_user
admin.logout_link_path = :destroy_admin_user_session_path
end
config.namespace :agent do |agent| …
Run Code Online (Sandbox Code Playgroud) 我正在尝试实现state_machine gem,在我的rails项目中,我安装了gem,然后我将列"state"添加到我的account_entries模型:
def change
add_column :account_entries, :state, :string
end
Run Code Online (Sandbox Code Playgroud)
然后在我的account_entries模型中,我添加了状态机初始方法,如下所示:
state_machine :state, :initial => :submitted do
end
Run Code Online (Sandbox Code Playgroud)
然后在我看来我显示时间输入状态:
account_entry.state
Run Code Online (Sandbox Code Playgroud)
但是当我尝试从我的应用程序创建account_entry时,我收到此错误:
protected method `around_validation' called for #<StateMachine::Machine:0xba3014ec>
Run Code Online (Sandbox Code Playgroud)
它说它位于我的account_entries控制器的第4行,这是我的account_entries控制器的第4行.
e.account_entries.create(params.require(:account_entry).permit(:time, :account_id))
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?或者这是我的问题?我该如何解决?错误消息是什么意思?
我非常清楚MVC模式,但Meteor本身似乎没有像它那样的任何模式.
在开发Meteor应用程序时使用哪种架构模式?
我在我的团队中有4个人,他们经常不得不改变数据库的套接字,因为它们有不同的路径,它变得烦人,我试图将database.yml添加到.gitignore:
/config/database.yml
Run Code Online (Sandbox Code Playgroud)
但是出于一些奇怪的原因,我编辑文件并使其git status
仍然被跟踪!谁能告诉我我能做些什么?
大多数时候我使用该gd
命令,然后我必须在新的终端选项卡中手动浏览文件,因为我仍然需要打开以前的文件。
能够在新选项卡中打开定义会有点有用,当然,我只是想知道这是否可能以及如何配置它,可能在 nvim 配置文件中映射一个新命令?
这就是我映射gd
命令的方式:
nmap <silent> gd <Plug>(coc-definition)
Run Code Online (Sandbox Code Playgroud) 我一直试图从命令行运行$ heroku pg:reset但我相信我没有正确地放入数据库.我尝试了很多变化.
我跑了$ heroku config | grep POSTGRESQL获取打印为的数据库名称
HEROKU_POSTGRESQL_PINK_URL: postgres://naknaswvxfvuup:QK2dHYNMZ_va10lDgMDo4S0BIM@ec2-23-21-161-255.compute-1.amazonaws.com:5432/db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)
我试过运行一切
#1
$ heroku pg:reset HEROKU_POSTGRESQL_PINK_URL: postgres://naknaswvxfvuup:QK2dHYNMZ_va10lDgMDo4S0BIM@ec2-23-21-161-255.compute-1.amazonaws.com:5432/db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)
#2
$ heroku pg reset postgres://naknaswvxfvuup:QK2dHYNMZ_va10lDgMDo4S0BIM@ec2-23-21-161-255.compute-1.amazonaws.com:5432/db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)
#3
$ heroku pg:reset db7eute4gu4mcb
Run Code Online (Sandbox Code Playgroud)
和其他变化.请让我知道如何正确记录这一点,因为我不断收到错误或来自命令行的此文本"! Unknown database: db7eute4gu4mcb. Valid options are: DATABASE_URL, HEROKU_POSTGRESQL_PINK_URL"
我目前在Ruby on Rails教程的10.4上.谢谢!
我在 Heroku 上部署了 Ruby On Rails 应用程序,我使用 ElasticSearch 插件,我的弹性搜索集群工作正常,但最近 ElasticSearch 插件要求所有集群强制执行身份验证,以保护托管集群内部的数据,现在,对于我们尝试提出的每个请求,我们都会收到以下异常:
Tire::Search::SearchRequestFailed (401 : {"error":{"root_cause":[{"type":"security_exception","reason":"action [indices:data/read/search] requires authentication","header":{"WWW-Authenticate":"Basic realm=\"shield\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"action [indices:data/read/search] requires authentication","header":{"WWW-Authenticate":"Basic realm=\"shield\" charset=\"UTF-8\""}},"status":401}):
Run Code Online (Sandbox Code Playgroud)
我们从Elasticsearch 附带的Shield插件配置了一些用户,但是我不确定如何从我的 ruby On Rails 应用程序输入此身份验证,我使用 Tire 在我的 Ruby On Rails 应用程序中集成弹性搜索,但我找不到我可以输入这些信息来验证我的应用程序并解决此问题吗?
我们想知道如何使用这两个 gem 进行身份验证: ElasticSearch-rails和Tire
devise ×2
ruby ×2
actioncable ×1
activeadmin ×1
architecture ×1
coc.nvim ×1
database ×1
git ×1
heroku ×1
meteor ×1
neovim ×1
tire ×1