Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Summierungsfehler
BeitragVerfasst: 15 Mär 2017, 20:30 
Offline
Nuby

Registriert: 12 Jan 2017, 21:40
Beiträge: 4
Hallo zusammen,

ich habe ein Problem bei meiner Ruby-Applikation. Ich erstelle Nutzer, welche einer Ressource zugeordnet werden (resource_id). Die Arbeitszeit der Nutzer gibt die Kapazität der Ressource an. In meiner Ressourcen-Tabelle soll nun die Gesamtkapazität der Ressourcen angezeigt werden. Diese ergibt sich dann aus der Summe der Kapazitäten der Nutzer die der jeweiligen Ressource zugeordnet sind. Bei mir zeigt er zurzeit aber bei jeder Ressource die gleiche Kapazität an, die Summe aller Ressourcen.

Als Beispiel:

Ich habe 2 Nutzer die jeweils 8 Stunden arbeiten:

Nutzer 1: capacity 8, resource_id 1
Nutzer 1: capacity 8, resource_id 2

Nun sollten in der Ressourcentabelle 2 Ressourcen mit jeweils der Kapazität 8 stehen. Bei mir stehen aber beide Ressourcen mit einer Kapazität von 16..

Hier die entsprechenden index-files, controller und models.

resource.index


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<% provide(:title, 'Ressourcen') %>
<p id="notice"><%= notice %></p>

<h1>Ressourcen</h1>

<table id="resources" class="display">
<thead>
<tr>
<th>Name</th>
<th>Gesamtkapazit��t</th>
<th></th>
<th></th>
</tr>
</thead>
<tbody>

<% @resources.each do |resource| %>
<tr>
<td><%= resource.name %></td>
<td><%= User.sum(:capacity, :conditions => {:resource_id => resource}) %></td>
<td><%= link_to 'Anzeigen', resource %></td>
<td><%= link_to 'Entfernen', resource, method: :delete, data: { confirm: 'Sind Sie sich sicher?' } %></td>
<% end %>
</tr>
</tbody>
</table>

<br>

<%= link_to "Neue Ressource", new_resource_path %>
<br>
<div class="navigation-left" style="float:left">
&lArr; <%= link_to "Zur��ck zu den Beziehungen", procedure_procedures_path %> </div>
<div class="navigation-left" style="float:right">
<%= link_to "Weiter mit den Verbr��uchen", procedure_resources_path %> &#8658; </div><br>
<div class="navigation-left" style="float:left">
&lArr; <%= link_to "Zur��ck zum Hauptmen��", project_start_path %> </div><br>


resource.model:


1
2
3
4
5
6
7
8
9
10
11
12
class Resource < ActiveRecord::Base
def resource_params
params.require(:resource).permit(:created_at, :name, :ocr, :cost, :oce)
end

validates :name, presence: true, uniqueness: true, length: {maximum: 50}

has_many :procedure_resources, :dependent => :destroy
has_many :procedures, through: :procedure_resources
has_many :users, :dependent => :destroy

end


resource.controller:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
class ResourcesController < ApplicationController
before_action :set_resource, only: [:show, :edit, :update, :destroy]

# GET /resources
# GET /resources.json
def index
@resources = Resource.all
@procedures = Procedure.all
@project = Project.find(1)
end

# GET /resources/1
# GET /resources/1.json

# GET /resources/1
# GET /resources/1.json
def show
@resource = Resource.find(params[:id])
end

# GET /resources/new
def new
@resource = Resource.new
end

# GET /resources/1/edit
def edit
@resource = Resource.find(params[:id])
end

# POST /resources
# POST /resources.json
def create
@resource = Resource.new(resource_params)

respond_to do |format|
if @resource.save
format.html { redirect_to @resource }
format.json { render :show, status: :created, location: @resource }
else
format.html { render :new }
format.json { render json: @resource.errors, status: :unprocessable_entity }
end
end
end

# PATCH/PUT /resources/1
# PATCH/PUT /resources/1.json
def update
@resource = Resource.find(params[:id])
respond_to do |format|
if @resource.update(resource_params)
format.html { redirect_to @resource }
format.json { render :show, status: :ok, location: @resource }
else
format.html { render :edit }
format.json { render json: @resource.errors, status: :unprocessable_entity }
end
end
end

# DELETE /resources/1
# DELETE /resources/1.json
def destroy
@resource = Resource.find(params[:id])
@resource.destroy
respond_to do |format|
format.html { redirect_to resources_url }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_resource
@resource = Resource.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def resource_params
params.require(:resource).permit(:name, :oce, :oce, :cost, :ocr)
end
end


users.modell (Mitarbeiter):


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
class User < ActiveRecord::Base
has_many :microposts, dependent: :destroy
has_many :active_relationships, class_name: "Relationship",
foreign_key: "follower_id",
dependent: :destroy
has_many :passive_relationships, class_name: "Relationship",
foreign_key: "followed_id",
dependent: :destroy
has_many :following, through: :active_relationships, source: :followed
has_many :followers, through: :passive_relationships, source: :follower

belongs_to :resource


before_save { self.email = email.downcase }
validates :name, presence: true, length: {maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, presence: true, length: { minimum: 6 }, allow_nil: true


# Returns the hash digest of the given string.
def User.digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end

# Defines a proto-feed.
# See "Following users" for the full implementation.
def feed
Micropost.all
end

# Follows a user.
def follow(other_user)
active_relationships.create(followed_id: other_user.id)
end

# Unfollows a user.
def unfollow(other_user)
active_relationships.find_by(followed_id: other_user.id).destroy
end

# Returns true if the current user is following the other user.
def following?(other_user)
following.include?(other_user)
end

end



users.controller:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
class UsersController < ApplicationController
before_action :logged_in_user, only: [:index, :edit, :update, :destroy,
:following, :followers]
before_action :correct_user, only: [:edit, :update]
before_action :admin_user, only: :destroy


def index
@users = User.paginate(page: params[:page])
end

def show
@user = User.find(params[:id])
@microposts = @user.microposts.paginate(page: params[:page])
end

def new
@user = User.new
end

def create
@user = User.new(user_params) # Not the final implementation!
if @user.save
log_in @user
flash[:success] = "Willkommen bei der Planung Ihres Projekts!"
redirect_to @user
else
render 'new'
end
end

def edit
@user = User.find(params[:id])
end

def update
@user = User.find(params[:id])
if @user.update_attributes(user_params)
flash[:success] = "Profil aktualisiert"
redirect_to @user
else
render 'edit'
end
end

def destroy
User.find(params[:id]).destroy
flash[:success] = "Nutzer gel��scht"
redirect_to users_url
end

def following
@title = "Ich Folge"
@user = User.find(params[:id])
@users = @user.following.paginate(page: params[:page])
render 'show_follow'
end

def followers
@title = "Mir Folgen"
@user = User.find(params[:id])
@users = @user.followers.paginate(page: params[:page])
render 'show_follow'
end

def update_proj
render 'update'
end


private

def user_params
params.require(:user).permit(:name, :capacity, :resource_id, :email, :password,
:password_confirmation)
end

# Before filters

# Confirms the correct user.
def correct_user
@user = User.find(params[:id])
redirect_to(root_url) unless current_user?(@user)
end

# Confirms an admin user.
def admin_user
redirect_to(root_url) unless current_user.admin?
end
end


Weiss jemand, wie ich es hinbekomme, dass er nur die Kapazität der jeweiligen Ressource in der resource.index anzeigt?
Der Fehler muss ja im resource.index bei folgender Zeile stecken: <td><%= User.sum(:capacity, :conditions => {:resource_id => resource}) %></td>
oder?

Danke schonmal! :)

Besten Gruß,
Phillip


Zuletzt geändert von Quintus am 18 Mär 2017, 18:45, insgesamt 2-mal geändert.
Code-Tags eingefügt


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Summeierungsfehler
BeitragVerfasst: 16 Mär 2017, 18:51 
Offline
Interpreter

Registriert: 15 Mär 2005, 19:26
Beiträge: 6142
Wohnort: Karlsruhe
Es handelt sich doch um Ruby on Rails, oder?

Falls ja - bitte hier kurz melden, weil ich den Thread dann dorthin verschieben werde. Das macht deutlich mehr Sinn.

_________________
WoNáDo.set_state!(:retired)


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Summeierungsfehler
BeitragVerfasst: 18 Mär 2017, 11:43 
Offline
Nuby

Registriert: 12 Jan 2017, 21:40
Beiträge: 4
Ja genau es ist RoR. Tut mir leid, bin noch ganz frisch hier unterwegs..:-D

Danke fürs verschieben :)


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
cron