我正在我的一个网站上使用Rails Admin.到目前为止它很棒,但我无法弄清楚如何从编辑页面中删除相关对象.
示例:我有两个模型Property和PropertyImage.
class Property
has_many :property_images, :dependent => :destroy
end
class PropertyImage
belongs_to :property
end
Run Code Online (Sandbox Code Playgroud)
我可以转到任一模型的实例的编辑屏幕,我可以从列表视图中删除PropertyImages.但是当我编辑一个Property时,我希望能够删除与它关联的PropertyImage.有没有办法在rails_admin中打开此功能?
这是我能看到的.
注意:"删除图像"按钮不是我想要的 - 这只是因为有一个上传关联到图像字段.它只编辑PropertyImage.
我是 Rails、Rails_Admin 和 Devise 的新手。尝试在模型中获取 current_user,我认为应该由 Devise 提供:
class Item < ActiveRecord::Base
attr_accessible :user_id
belongs_to :user, :inverse_of => :items
after_initialize do
if new_record?
self.user_id = current_user.id unless self.user_id
end
end
end
Run Code Online (Sandbox Code Playgroud)
在 Rails_Admin 中我得到:
undefined local variable or method `current_user' for #<Item:0x007fc3bd9c4d60>
Run Code Online (Sandbox Code Playgroud)
与相同
self.user_id = _current_user.id unless self.user_id
Run Code Online (Sandbox Code Playgroud)
我看到 config/initializers/rails_admin.rb 中有一行,但不确定它的作用:
config.current_user_method { current_user } # auto-generated
Run Code Online (Sandbox Code Playgroud) 我正在使用Rails 4.0.1和ruby 2.1.1.我正在尝试将cancan与rails_admin集成.我application_controller.rb
看起来像这样
helper_method :current_user
private
def current_user
@current_user ||= User.find_by(email: session[:user_id]) if session[:user_id]
end
Run Code Online (Sandbox Code Playgroud)
我的current_user
帮助方法从应用程序的其余部分正常工作.我ability.rb
看起来像这样
class Ablity
include CanCan::Ability
def initialize(user)
if user
can :access, :rails_admin
end
end
end
Run Code Online (Sandbox Code Playgroud)
控制根本不在if条件内,这意味着"user"参数为"nil".当我尝试访问rails_admin时,我得到一个CanCan::AccessDenied
异常.我哪里错了?
编辑:我没有使用设计进行身份验证
更新:我已经cancan
用cancancan
1.8版取代了.还是行不通
我正在向 rails_admin 添加一个新模型。即使没有任何配置,列表页面也能正确显示日期时间字段。但是给定对象的详细信息(显示)页面不显示日期时间。如何配置 rails_admin 以在显示页面上显示日期时间字段?
模型文件:alert_recording.rb:
class AlertRecording < ActiveRecord::Base
attr_accessible :user_id, :admin_id, :message, :sent_at, :acknowledged_at, :created_at, :updated_at
end
Run Code Online (Sandbox Code Playgroud)
Rails_admin 初始化文件:
...
config.included_models = [
AlertRecording
]
...
config.model AlertRecording do
field :sent_at, :datetime
field :acknowledged_at, :datetime
field :message
field :user
field :admin
field :created_at, :datetime
field :updated_at, :datetime
list do; end
show do; end
end
Run Code Online (Sandbox Code Playgroud)
配置日期时间字段以便我在节目视图中看到它们的正确方法是什么?
我有一个有布尔字段的rails_admin表单(与rails4 ruby 2.0一起使用):表示贷方或借方操作的操作。
我已在选择 Credit(true) 选项时使用的字段使用了枚举。但在保存“操作不能为空”时抛出验证错误。
我有以下代码。
field :action, :enum do
enum do
[['Credit', true], ['Debit', false]]
end
end
Run Code Online (Sandbox Code Playgroud)
我还尝试通过将枚举用作方法来交换枚举的用法。
def action_enum
[['Credit', true], ['Debit', false]]
end
Run Code Online (Sandbox Code Playgroud)
但到目前为止还没有任何效果。我尝试浏览 Rails_admin wiki 的文档: https: //github.com/sferik/rails_admin/wiki但无法解决问题。
任何人都可以建议任何解决方案或指出我缺少什么吗?
我目前正在使用带有CanCanCan 1.13.1的Rails 4.1.14,并在模型/记录级别上定义了细化权限.管理员可以管理所有文章,但用户只能编辑他们撰写的文章.
为了防止普通用户编辑特定字段,我根据角色在rails_admin中显示字段.
visible do
bindings[:object].id == bindings[:view].current_user.roles.include? :admin
end
Run Code Online (Sandbox Code Playgroud)
我也使用https://github.com/aasm/aasm gem并创建自定义操作,以便用户可以将记录移动到新状态.
但我真正想要的是根据用户的角色/记录启用字段级权限.我在CanCanCan或https://github.com/elabs/pundit页面上找不到任何文档.
有人有经验吗?
我正在使用rails 5,我正在尝试使用pundit为我的rails_admin面板实现授权.所以我在我的应用程序控制器中包含了pundit并安装了rails_admin_pundit gem,你可以在我的Gemfile的这个片段中看到:
gem 'devise'
gem 'devise-i18n'
gem 'rails_admin', '~> 1.0'
gem 'rails_admin-i18n'
gem 'rails_admin_tag_list', github: 'kryzhovnik/rails_admin_tag_list'
gem 'pundit'
gem "rails_admin_pundit", :github => "sudosu/rails_admin_pundit"
Run Code Online (Sandbox Code Playgroud)
申请政策:
class ApplicationPolicy
attr_reader :current_user, :record
def initialize(current_user, record)
@user = current_user
@record = record
end
def index?
false
end
def show?
scope.where(:id => record.id).exists?
end
def create?
false
end
def new?
create?
end
def update?
false
end
def edit?
update?
end
def destroy?
false
end
def rails_admin?(action)
case action
when :dashboard …
Run Code Online (Sandbox Code Playgroud) 我使用的是Rails 3.2,RailsAdmin 0.0.3,Rspec和Capybara.
我尝试从我的spec文件中调用RailsAdmin url helper,如RailsAdmin wiki中所述. rails_admin.new_path(:model_name => :user)
当我从控制器或视图中使用帮助器时,它工作得很好但是当试图从spec文件中使用它时它会出现这个错误:
未定义的局部变量或方法`rails_admin'用于#RSpec :: Core :: ExampleGroup :: Nested_2:0xbe04948>
我想我必须在spec_helper.rb文件中添加一些内容才能加载rails_admin.但谷歌搜索了一段时间,并期待着rails_admin gem的spec_helper,我无法弄清楚是什么......
任何帮助都会被贬低!
我有一个自关联模型,允许用户定义"父照片",以便将它们组合在一起.
我的模特:
class Photo < ActiveRecord::Base
attr_accessible :image, :parent_photo
has_attached_file :image, :styles => { :medium => "300x300>", :thumb => "100x100>" }
validates_attachment :image,
:presence => true,
:size => { :in => 20..2000.kilobytes },
:content_type => { :content_type => [ 'image/jpeg', 'image/png' ] }
belongs_to :parent, class_name: "Photo", foreign_key: :parent_photo
def associated_photos
Photo.find_by_parent_photo(id)
end
end
Run Code Online (Sandbox Code Playgroud)
在我的rails_admin初始化程序中:
..
config.model Photo do
list do
field :image
field :associated_photos
end
end
end
Run Code Online (Sandbox Code Playgroud)
如何检索实际缩略图以在列表操作中使用?
我有一些模型的Rails应用程序,使用rails_admin进行前端和管理.我有这些rails_admin设置:
# Config/initializers/rails_admin.rb
RailsAdmin.config do |config|
...
config.included_models = %w[ User Page Event Link Slide Main Partner ]
...
end
Run Code Online (Sandbox Code Playgroud)
但它不起作用,它只显示事件,链接,页面.我不知道我错在哪里.